import java.awt.*;
import java.awt.event.*;
public class wbl extends Thread implements ActionListener//wbl父类为线程类并申明接口准备处理窗口消息
{
static Frame frame_main=new Frame("微波炉模拟应用程序");//程序主框架
static Panel window=new Panel();//模拟微波炉的窗口
static Panel display=new Panel();//微波炉LED显示区
static Label time=new Label();//LED时间显示区
static Label flag=new Label();//时间设定下标显示区
static Label statue=new Label();//微波炉当前状态显示区
static Button but_begin=new Button("开始");//开始按钮
static Button but_end=new Button("停止");//停止按钮
static Button but_1=new Button("1");//一下为数字键
static Button but_2=new Button("2");
static Button but_3=new Button("3");
static Button but_4=new Button("4");
static Button but_5=new Button("5");
static Button but_6=new Button("6");
static Button but_7=new Button("7");
static Button but_8=new Button("8");
static Button but_9=new Button("9");
static Button but_0=new Button("0");
static Button but_timeset=new Button("设定时间");//时间设定按钮
static wbl w=new wbl();//主类实例
static int num[]=new int[4];//记录四个显示时间的数字
static int i=0,total=0;//i为时间设定时候的循环变量,total为微波炉加热时候的剩余加热总秒数
static boolean ifsettime=false,iftimeready=false,ifrunning=false;
//三个状态量分别表示:是否在设定时间、时间是否设定成功、微波炉是否在加热状态
static void setflag()//时间设定时LED时间显示下标设定函数
{
if(i==0) flag.setText(" △");//设定下标
else if(i==1) flag.setText(" △");
else if(i==2) flag.setText(" △");
else if(i==3) flag.setText(" △");
else flag.setText("");
}
public void run()//线程体的run()方法
{
while(total--!=0)
{
try
{
time.setText(""+total/60/10+total/60%10+":"+total%60/10+total%60%10);
Thread.sleep(1000);
}
catch(InterruptedException e){}
if(total==0)
{
statue.setText("加热完成!");
window.setBackground(Color.gray);
num[0]=0;
num[1]=0;
num[2]=0;
num[3]=0;
iftimeready=false;
ifrunning=false;
w.suspend();
}
}
}
public void actionPerformed(ActionEvent ev)//窗口消息处理函数
{
Button btn=(Button)ev.getSource();//取得发生事件的资源
if(btn==but_begin)//开始按钮
{
if(iftimeready)
{
if(!ifrunning)
{
total=(num[0]*10+num[1])*60+num[2]*10+num[3];
window.setBackground(Color.yellow);
ifrunning=true;
statue.setText("加热中···");
w.resume();
}
}
else
{
statue.setText("请先设定时间!");
}
}
else if(btn==but_end)//停止按钮
{
window.setBackground(Color.gray);
num[0]=0;
num[1]=0;
num[2]=0;
num[3]=0;
time.setText(""+num[0]+num[1]+":"+num[2]+num[3]);
statue.setText("停止");
iftimeready=false;
ifrunning=false;
ifsettime=false;
w.suspend();
}
else if(btn==but_1)//一下为数字键
{
if(ifsettime)
{
num[i]=1;
time.setText(""+num[0]+num[1]+":"+num[2]+num[3]);
i++;
setflag();
if(i==4)
{
ifsettime=false;
iftimeready=true;
statue.setText("时间设定完毕");
}
}
}
else if(btn==but_2)
{
if(ifsettime)
{
num[i]=2;
time.setText(""+num[0]+num[1]+":"+num[2]+num[3]);
i++;
setflag();
if(i==4)
{
ifsettime=false;
iftimeready=true;
statue.setText("时间设定完毕");
}
}
}
else if(btn==but_3)
{
if(ifsettime)
{
num[i]=3;
time.setText(""+num[0]+num[1]+":"+num[2]+num[3]);
i++;
setflag();
if(i==4)
{
ifsettime=false;
iftimeready=true;
statue.setText("时间设定完毕");
}
}
}
else if(btn==but_4)
{
if(ifsettime)
{
num[i]=4;
time.setText(""+num[0]+num[1]+":"+num[2]+num[3]);
i++;
setflag();
if(i==4)
{
ifsettime=false;
iftimeready=true;
statue.setText("时间设定完毕");
}
}
}
else if(btn==but_5)
{
if(ifsettime)
{
num[i]=5;
time.setText(""+num[0]+num[1]+":"+num[2]+num[3]);
i++;
setflag();
if(i==4)
{
ifsettime=false;
iftimeready=true;
statue.setText("时间设定完毕");
}
}
}
else if(btn==but_6)
{
if(ifsettime&&i%2==1)
{
num[i]=6;
time.setText(""+num[0]+num[1]+":"+num[2]+num[3]);
i++;
setflag();
if(i==4)
{
ifsettime=false;
iftimeready=true;
statue.setText("时间设定完毕");
}
}
}
else if(btn==but_7)
{
if(ifsettime&&i%2==1)
{
num[i]=7;
time.setText(""+num[0]+num[1]+":"+num[2]+num[3]);
i++;
setflag();
if(i==4)
{
ifsettime=false;
iftimeready=true;
statue.setText("时间设定完毕");
}
}
}
else if(btn==but_8)
{
if(ifsettime&&i%2==1)
{
num[i]=8;
time.setText(""+num[0]+num[1]+":"+num[2]+num[3]);
i++;
setflag();
if(i==4)
{
ifsettime=false;
iftimeready=true;
statue.setText("时间设定完毕");
}
}
}
else if(btn==but_9)
{
if(ifsettime&&i%2==1)
{
num[i]=9;
time.setText(""+num[0]+num[1]+":"+num[2]+num[3]);
i++;
setflag();
if(i==4)
{
ifsettime=false;
iftimeready=true;
statue.setText("时间设定完毕");
}
}
}
else if(btn==but_0)
{
if(ifsettime)
{
num[i]=0;
time.setText(""+num[0]+num[1]+":"+num[2]+num[3]);
i++;
setflag();
if(i==4)
{
ifsettime=false;
iftimeready=true;
statue.setText("时间设定完毕");
}
}
}
else if(btn==but_timeset&&!ifrunning)//事件设定按钮
{
statue.setText("设定时间");
num[0]=0;
num[1]=0;
num[2]=0;
num[3]=0;
time.setText(""+num[0]+num[1]+":"+num[2]+num[3]);
ifsettime=true;
i=0;
setflag();
}
}
public static void main(String[] args)//程序入口
{
//程序主框架设定
frame_main.setLayout(null);
frame_main.setResizable(false);//不可更改大小
frame_main.setBounds(250, 100, 700, 430);
//模拟微波炉窗口设定
window.setBounds(20, 45, 460, 350);
window.setBackground(Color.gray);
//LED显示区设定
display.setLayout(null);
display.setBounds(490, 50,200, 130);
display.setBackground(Color.black);
//LED时间显示区设定
time.setBounds(0, 0, 200, 70);
time.setText(""+num[0]+num[1]+":"+num [2]+num[3]);
time.setForeground(Color.red);
time.setFont(new Font("",Font.ROMAN_BASELINE,78));
//LED显示区数字显示器下标显示区设定
flag.setBounds(0, 70, 200, 10);
flag.setForeground(Color.red);
flag.setFont(new Font("",Font.ROMAN_BASELINE,10));
//微波炉运行状态显示区设定
statue.setBounds(0, 80, 200, 50);
statue.setText("微波炉已启动");
statue.setForeground(Color.red);
statue.setFont(new Font("",Font.ROMAN_BASELINE,30));
//开始按钮
but_begin.setBounds(490, 200, 90, 40);
but_begin.addActionListener(w);
//停止按钮
but_end.setBounds(600, 200, 90, 40);
but_end.addActionListener(w);
//数字键
but_1.setBounds(490, 250, 65, 35);
but_1.addActionListener(w);
but_2.setBounds(555, 250, 65, 35);
but_2.addActionListener(w);
but_3.setBounds(620, 250, 65, 35);
but_3.addActionListener(w);
but_4.setBounds(490, 285, 65, 35);
but_4.addActionListener(w);
but_5.setBounds(555, 285, 65, 35);
but_5.addActionListener(w);
but_6.setBounds(620, 285, 65, 35);
but_6.addActionListener(w);
but_7.setBounds(490, 320, 65, 35);
but_7.addActionListener(w);
but_8.setBounds(555, 320, 65, 35);
but_8.addActionListener(w);
but_9.setBounds(620, 320, 65, 35);
but_9.addActionListener(w);
but_0.setBounds(490, 355, 65, 35);
but_0.addActionListener(w);
//时间设定键
but_timeset.setBounds(550, 355, 135, 35);
but_timeset.addActionListener(w);
//将组件添加到主框架
frame_main.add(window);
frame_main.add(display);
display.add(time);
display.add(flag);
display.add(statue);
frame_main.add(but_begin);
frame_main.add(but_end);
frame_main.add(but_1);
frame_main.add(but_2);
frame_main.add(but_3);
frame_main.add(but_4);
frame_main.add(but_5);
frame_main.add(but_6);
frame_main.add(but_7);
frame_main.add(but_8);
frame_main.add(but_9);
frame_main.add(but_0);
frame_main.add(but_timeset);
frame_main.setVisible(true);
//实现窗口关闭按钮的功能
frame_main.addWindowListener(new WindowAdapter ()
{
public void windowClosing(WindowEvent e)
{ //重写父类方法,达到关闭小窗口的目的
System.exit(0);
}
});
w.start();//线程启动
w.suspend();//暂停线程
}
}