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