微波炉模拟应用程序(帮朋友的同学做的一个java选修课大作业)

来源:互联网 发布:大小姐zetacola知乎 编辑:程序博客网 时间:2024/04/30 01:07

 

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();//暂停线程

}

}

原创粉丝点击