?? tower.java
字號:
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
public class Tower extends Frame implements ActionListener,Runnable //用接口實現多重繼承
{
HannoiTower tower=null; //初始化各變量
Button renew,auto=null;
char towerName[]={'A','B','C'};
int 盤子數目,盤寬,盤高;
Thread thread; //線程的創建
TextArea 信息條=null;
public Tower() //構造方法
{
thread=new Thread(this);
盤子數目=5;
盤寬=80;
盤高=18;
信息條=new TextArea(12,12);
信息條.setText(null);
tower=new HannoiTower(盤子數目,盤寬,盤高,towerName,信息條);
renew=new Button("重新開始"); //重新開始按鈕
auto=new Button("自動演示搬盤子"); //自動演示按鈕
renew.addActionListener(this); //事件監聽接口
auto.addActionListener(this);
add(tower,BorderLayout.CENTER); //布局管理器--塔的位置
add(renew,BorderLayout.SOUTH); //重新開始按鈕位置
add(auto,BorderLayout.NORTH); //自動演示按鈕位置
add(信息條,BorderLayout.WEST); //文本框位置
addWindowListener(new WindowAdapter() //事件監聽接口
{ public void windowClosing(WindowEvent e) //事件監聽方法
{ System.exit(0);
}
});
setVisible(true); //使可見
setBounds(100,30,710,580); //窗口位置和大小
validate(); //畫面出現
}
public void actionPerformed(ActionEvent e) //設置按鈕事件
{
if(e.getSource()==renew) //若點擊重新開始按鈕
{
if(!(thread.isAlive())) //判斷線程是否活動
{
this.remove(tower); //可移動盤子
信息條.setText(null); //文本框為空
tower=new HannoiTower(盤子數目,盤寬,盤高,towerName,信息條); //塔還原為原來位置
add(tower,BorderLayout.CENTER); //塔的初始狀態
validate(); //畫面出現
}
else
{
}
}
if(e.getSource()==auto) //若點擊自動演示按鈕
{
if(!(thread.isAlive())) //判斷線程是否活動
{
thread=new Thread(this);
}
try
{
thread.start(); //啟動線程的執行;
}
catch(Exception eee) //輸出異常信息
{
}
}
}
public void run() //覆蓋 Thread 的 run() 函數
{
this.remove(tower); //移動塔
信息條.setText(null); //文本框為空
tower=new HannoiTower(盤子數目,盤寬,盤高,towerName,信息條); //盤子的移動位置
add(tower,BorderLayout.CENTER); //移動時整個塔位置的變化
validate();
tower.自動演示搬運盤子(盤子數目,towerName[0] ,towerName[1],towerName[2]);
}
public static void main(String args[]) //main方法
{
new Tower(); //調用方法
}
}
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -