⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 setupwindow.java

📁 自己写的汉诺塔java程序。通过调用ShowHanoiFrame开启主界面及可运行程序。软件语言java
💻 JAVA
字号:
package TowersOfHanoi;

import java.awt.*;
import javax.swing.*;
import javax.swing.border.*;
import java.awt.event.*;

//设置参数窗口
public class SetupWindow extends JDialog {
    Box setupBox;
    JPanel buttonPanel;
    ShowHanoiFrame hannio;
    char towerName[] = {'A','B','C'};
    public SetupWindow(ShowHanoiFrame hannio) {
        super(hannio,"设置参数",true);
        this.hannio=hannio;
        init();
        setDefaultCloseOperation(JDialog.DISPOSE_ON_CLOSE);
        Container cp=getContentPane();
        cp.add(BorderLayout.CENTER,setupBox);
        cp.add(BorderLayout.SOUTH,buttonPanel);
        setSize(220,140);
        //setAlwaysOnTop(true);
        setResizable(false);
        setLocationRelativeTo(hannio);
        setVisible(true);
    }

    public void init(){
        setupBox=Box.createVerticalBox();
        Box numDiskBox=Box.createHorizontalBox();
        Box moveSpeedBox=Box.createHorizontalBox();

        String[] sNumDisk=new String[10];
        for(int i=0;i<sNumDisk.length;i++){
            sNumDisk[i]=""+(i+1);
        }
        JLabel numDiskLabel=new JLabel(" 塔层数(1-10) :");
        JLabel moveSpeedLabel=new JLabel("移动速度(毫秒):");
        final JComboBox numDiskCB=new JComboBox(sNumDisk);
        numDiskCB.setSelectedIndex(3);
        final JTextField moveSpeedField=new JTextField("10");
        numDiskBox.add(numDiskLabel);
        numDiskBox.add(numDiskCB);
        numDiskBox.add(Box.createHorizontalStrut(30));
        moveSpeedBox.add(moveSpeedLabel);
        moveSpeedBox.add(moveSpeedField);
        moveSpeedBox.add(Box.createHorizontalStrut(30));
        setupBox.add(Box.createVerticalStrut(10));
        setupBox.add(numDiskBox);
        setupBox.add(Box.createVerticalStrut(10));
        setupBox.add(moveSpeedBox);
        setupBox.add(Box.createVerticalStrut(10));

        //按钮
        buttonPanel=new JPanel(new FlowLayout(FlowLayout.CENTER));
        JButton okButton = new JButton("确定");
        JButton cancelButton = new JButton("取消");
        okButton.addActionListener(new ActionListener() {
            public void actionPerformed(ActionEvent e) {
                hannio.setNumDisks(Integer.parseInt((String) (numDiskCB.
                        getSelectedItem())));
                try {
                    hannio.setSpeed(Integer.parseInt(moveSpeedField.getText()));
                    hannio.getTower().setMyThreadStop();
                    hannio.remove(hannio.getTower());
                    hannio.setTower(new HannoiTowerPanel(hannio.getNumDisks(),
                            towerName, hannio.getSpeed(), Integer.MIN_VALUE));
                    hannio.setCp(hannio.getTower());
                    hannio.validate();
                    dispose();
                }catch(Exception ee){
                    JOptionPane.showConfirmDialog(SetupWindow.this, "数据填写有误! :(", "错误",
                          JOptionPane.OK_CANCEL_OPTION,JOptionPane.WARNING_MESSAGE);
                }

            }
        });

        cancelButton.addActionListener(new ActionListener() {
            public void actionPerformed(ActionEvent e) {
                dispose();
            }
        });

        buttonPanel.add(okButton);
        buttonPanel.add(cancelButton);
        buttonPanel.setBorder(new LineBorder(Color.BLUE));


    }

    public static void main(String[] args) {
       // SetupWindow setupwindow = new SetupWindow();
    }
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -