📄 showhanoiframe.java~3~
字号:
bar.addSeparator();
bar.add(startLabel);
bar.add(pauseLabel);
bar.add(stopLabel);
bar.addSeparator();
bar.add(setupLabel);
bar.addSeparator();
bar.add(messageLabel);
bar.add(Box.createHorizontalGlue());
}
public void mouseClicked(MouseEvent e) {
JLabel label = (JLabel) e.getSource();
if (label == newLabel) {
stop();
} else if (label == openLabel) {
try {
String fileName=openFile();
if(fileName!=null){
FileInputStream fis = new FileInputStream(fileName);
ObjectInputStream ois = new ObjectInputStream(fis);
HannoiTowerPanel hannoi = (HannoiTowerPanel) ois.readObject();
ois.close();
tower.setMyThreadStop();
this.remove(tower);
tower = new HannoiTowerPanel(hannoi.getNumDisks(),
towerName, 0,
hannoi.getThreadState());
tower.getMyThread().start();
cp.add(tower, BorderLayout.CENTER);
validate();
}
} catch (Exception ee) {ee.printStackTrace();}
} else if (label == saveLabel) {
try {
String fileName = saveFile();
if (fileName != null) {
FileOutputStream fos = new FileOutputStream(fileName+".dat");
ObjectOutputStream oos = new ObjectOutputStream(fos);
oos.writeObject(tower);
oos.flush();
fos.close();
}
} catch (Exception ee) {}
} else if (label == startLabel) {
if (tower.getMyThread().isAlive()) {
synchronized (tower.getMyThread()) {
tower.setLimitState(Integer.MIN_VALUE);
tower.setSpeed(this.speed);
tower.setPause(false);
tower.getMyThread().notify();
}
}else{
play();
}
} else if (label == pauseLabel) {
pauseThread();
} else if (label == stopLabel) {
stop();
} else if (label == setupLabel) {
new SetupWindow(this);
} else if (label == messageLabel) {
JOptionPane.showConfirmDialog(ShowHanoiFrame.this, "土木水利学院 水力学及河流动力学\n 作者:王艳君-20706162", "作者信息",
JOptionPane.CLOSED_OPTION,JOptionPane.INFORMATION_MESSAGE);
}
}
public void mousePressed(MouseEvent e) {
JLabel label = (JLabel) e.getSource();
if (label == newLabel) {
newLabel.setBorder(new SoftBevelBorder(SoftBevelBorder.LOWERED));
} else if (label == openLabel) {
openLabel.setBorder(new SoftBevelBorder(SoftBevelBorder.LOWERED));
} else if (label == saveLabel) {
saveLabel.setBorder(new SoftBevelBorder(SoftBevelBorder.LOWERED));
} else if (label == startLabel) {
startLabel.setBorder(new SoftBevelBorder(SoftBevelBorder.LOWERED));
} else if (label == pauseLabel) {
pauseLabel.setBorder(new SoftBevelBorder(SoftBevelBorder.LOWERED));
} else if (label == stopLabel) {
stopLabel.setBorder(new SoftBevelBorder(SoftBevelBorder.LOWERED));
} else if (label == setupLabel) {
setupLabel.setBorder(new SoftBevelBorder(SoftBevelBorder.LOWERED));
} else if (label == messageLabel) {
messageLabel.setBorder(new SoftBevelBorder(SoftBevelBorder.LOWERED));
}
}
public void mouseReleased(MouseEvent e) {
JLabel label = (JLabel) e.getSource();
Rectangle rect;
if (label == newLabel) {
rect = newLabel.getVisibleRect();
if (rect.contains(e.getPoint()))
newLabel.setBorder(new SoftBevelBorder(SoftBevelBorder.RAISED));
} else if (label == openLabel) {
rect = openLabel.getVisibleRect();
if (rect.contains(e.getPoint()))
openLabel.setBorder(new SoftBevelBorder(SoftBevelBorder.RAISED));
} else if (label == saveLabel) {
rect = saveLabel.getVisibleRect();
if (rect.contains(e.getPoint()))
saveLabel.setBorder(new SoftBevelBorder(SoftBevelBorder.RAISED));
} else if (label == startLabel) {
rect = startLabel.getVisibleRect();
if (rect.contains(e.getPoint()))
startLabel.setBorder(new SoftBevelBorder(SoftBevelBorder.RAISED));
} else if (label == pauseLabel) {
rect = pauseLabel.getVisibleRect();
if (rect.contains(e.getPoint()))
pauseLabel.setBorder(new SoftBevelBorder(SoftBevelBorder.RAISED));
} else if (label == stopLabel) {
rect = stopLabel.getVisibleRect();
if (rect.contains(e.getPoint()))
stopLabel.setBorder(new SoftBevelBorder(SoftBevelBorder.RAISED));
} else if (label == setupLabel) {
rect = setupLabel.getVisibleRect();
if (rect.contains(e.getPoint()))
setupLabel.setBorder(new SoftBevelBorder(SoftBevelBorder.RAISED));
} else if (label == messageLabel) {
rect = messageLabel.getVisibleRect();
if (rect.contains(e.getPoint()))
messageLabel.setBorder(new SoftBevelBorder(SoftBevelBorder.RAISED));
}
}
public void mouseEntered(MouseEvent e) {
JLabel label = (JLabel) e.getSource();
if (label == newLabel) {
newLabel.setBorder(new SoftBevelBorder(SoftBevelBorder.RAISED));
} else if (label == openLabel) {
openLabel.setBorder(new SoftBevelBorder(SoftBevelBorder.RAISED));
} else if (label == saveLabel) {
saveLabel.setBorder(new SoftBevelBorder(SoftBevelBorder.RAISED));
} else if (label == startLabel) {
startLabel.setBorder(new SoftBevelBorder(SoftBevelBorder.RAISED));
} else if (label == pauseLabel) {
pauseLabel.setBorder(new SoftBevelBorder(SoftBevelBorder.RAISED));
} else if (label == stopLabel) {
stopLabel.setBorder(new SoftBevelBorder(SoftBevelBorder.RAISED));
} else if (label == setupLabel) {
setupLabel.setBorder(new SoftBevelBorder(SoftBevelBorder.RAISED));
} else if (label == messageLabel) {
messageLabel.setBorder(new SoftBevelBorder(SoftBevelBorder.RAISED));
}
}
public void mouseExited(MouseEvent e) {
JLabel label = (JLabel) e.getSource();
if (label == newLabel) {
newLabel.setBorder(BorderFactory.createEmptyBorder(3,3,3,3));
} else if (label == openLabel) {
openLabel.setBorder(BorderFactory.createEmptyBorder(3,3,3,3));
} else if (label == saveLabel) {
saveLabel.setBorder(BorderFactory.createEmptyBorder(3,3,3,3));
} else if (label == startLabel) {
startLabel.setBorder(BorderFactory.createEmptyBorder(3,3,3,3));
} else if (label == pauseLabel) {
pauseLabel.setBorder(BorderFactory.createEmptyBorder(3,3,3,3));
} else if (label == stopLabel) {
stopLabel.setBorder(BorderFactory.createEmptyBorder(3,3,3,3));
} else if (label == setupLabel) {
setupLabel.setBorder(BorderFactory.createEmptyBorder(3,3,3,3));
} else if (label == messageLabel) {
messageLabel.setBorder(BorderFactory.createEmptyBorder(3,3,3,3));
}
}
public String openFile(){
JFileChooser chooser = new JFileChooser();
ExampleFileFilter filter = new ExampleFileFilter();
filter.addExtension("dat");
filter.setDescription("DAT 文件");
chooser.setFileFilter(filter);
int returnVal = chooser.showOpenDialog(ShowHanoiFrame.this);
if (returnVal == JFileChooser.APPROVE_OPTION) {
return(""+chooser.getSelectedFile());
}
return null;
}
public String saveFile(){
JFileChooser chooser = new JFileChooser();
ExampleFileFilter filter = new ExampleFileFilter();
filter.addExtension("dat");
filter.setDescription("DAT 文件");
chooser.setFileFilter(filter);
int returnVal = chooser.showSaveDialog(ShowHanoiFrame.this);
if (returnVal == JFileChooser.APPROVE_OPTION) {
return(""+chooser.getSelectedFile());
}
return null;
}
public void play() {
tower.setMyThreadStop();
this.remove(tower);
tower = new HannoiTowerPanel(numDisks, towerName, speed,Integer.MIN_VALUE);
cp.add(tower, BorderLayout.CENTER);
validate();
tower.getMyThread().start();
}
public void pauseThread(){
synchronized (tower.getMyThread()) {
tower.setPause(true);
}
}
public void stop(){
tower.setMyThreadStop();
this.remove(tower);
tower = new HannoiTowerPanel(numDisks, towerName, speed,Integer.MIN_VALUE);
cp.add(tower, BorderLayout.CENTER);
validate();
}
public void setNumDisks(int numDisks){
this.numDisks=numDisks;
}
public int getNumDisks(){
return this.numDisks;
}
public void setSpeed(int speed){
this.speed=speed;
}
public int getSpeed(){
return this.speed;
}
public void setTower(HannoiTowerPanel tower){
this.tower=tower;
}
public HannoiTowerPanel getTower(){
return this.tower;
}
public void setCp(HannoiTowerPanel tower){
this.cp.add(tower,BorderLayout.CENTER);
}
public Container getCp(){
return this.cp;
}
public static void main(String[] args) {
ShowHanoiFrame desktopjframe = new ShowHanoiFrame();
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -