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

📄 tower.java

📁 程序简明清晰
💻 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 + -