📄 setupwindow.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 + -