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

📄 ovenframe.java

📁 该程序是用jbuilder制作
💻 JAVA
字号:
package myoven.application;

import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import com.borland.jbcl.layout.*;
import myoven.button.*;
import myoven.beeper.*;
import myoven.door.*;
import myoven.light.*;
import myoven.powertube.*;
import myoven.timer.*;
import myoven.observer.*;

import com.borland.jbcl.layout.XYLayout;
import javax.swing.border.*;

public class OvenFrame extends JFrame {

//微波炉元素定义
  BaseButton cookButton=new BaseButton();//烹饪按钮
//  StatefulButton cookButton=new StatefulButton();
  BaseButton cancelButton=new BaseButton();//取消按钮
  myoven.timer.Timer timer=myoven.timer.Timer.getInstance();//计时器
  PowerTube powertube=PowerTube.getInstance();//功率管
  Light light=Light.getInstance();//灯
  Beeper beeper=Beeper.getInstance();//鸣叫器
  Door door=new Door();//炉门

//观察者定义
  Beeper_ButtonObserver beepBtnObs=new Beeper_ButtonObserver();
  Beeper_TimerExpiredObserver beepTimExpObs=new Beeper_TimerExpiredObserver();

  Light_TimerOnObserver lgtTimOnObs=new Light_TimerOnObserver();
  Light_DoorOpenObserver lgtDoorOpenObs=new Light_DoorOpenObserver();
  Light_DoorCloseObserver lgtDoorCloseObs=new Light_DoorCloseObserver();
  Light_TimerExpiredObserver lgtTimExpObs=new Light_TimerExpiredObserver();
  Light_TimerOffObserver lgtTimOffObs=new Light_TimerOffObserver();
  Light_CancelButtonObserver lgtCanlBtnObs=new Light_CancelButtonObserver();

  PowerTube_DoorOpenObserver pwtDoorOpenObs=new PowerTube_DoorOpenObserver();
  PowerTube_TimeOffObserver pwtTimOffObs=new PowerTube_TimeOffObserver();
  PowerTube_TimerOnObserver pwtTimOnObs=new PowerTube_TimerOnObserver();
  PowerTube_TimeExpiredObserver pwtTimExpObs=new PowerTube_TimeExpiredObserver();

  Timer_CancelButtonObserver timCanlBtnObs=new Timer_CancelButtonObserver();
  Timer_CookButtonObserver timCookBtnObs=new Timer_CookButtonObserver();
  Timer_DoorOpenObserver timDoorOpenObs=new Timer_DoorOpenObserver();
  Timer_DoorCloseObserver timDoorCloseObs=new Timer_DoorCloseObserver();

  final int TIMEINTERVAL=100;//计时单位

//界面定义
  ImageIcon icon_light_on=new ImageIcon("images/light_on.gif");
  ImageIcon icon_light_off=new ImageIcon("images/light_off.gif");
  ImageIcon icon_door_open=new ImageIcon("images/door_open.gif");
  ImageIcon icon_door_close=new ImageIcon("images/door_close.gif");
  ImageIcon icon_powerTube_off=new ImageIcon("images/powerTube_off.gif");
  ImageIcon icon_powerTube_on=new ImageIcon("images/powerTube_on.gif");
  ImageIcon icon_null=new ImageIcon();
  ImageIcon icon_oven=new ImageIcon("images/oven.jpg");
  ImageIcon icon_duck=new ImageIcon("images/duck2.jpg");

  JPanel contentPane;
  JButton jButton_cookButton = new JButton();
  JButton jButton_cancelButton = new JButton();
  JRadioButton jRadioButton_DoorSwitch = new JRadioButton();
  JLabel jLabel_light = new JLabel();
  JLabel jLabel_door = new JLabel();
  JLabel jLabel_powerTube = new JLabel();
  JLabel jLabel1 = new JLabel();
  JLabel jLabel2 = new JLabel();
  XYLayout xYLayout1 = new XYLayout();
  TitledBorder titledBorder1;
  JLabel jLabel3 = new JLabel();
  JTextField jTextField_timeRemain = new JTextField();
  JLabel jLabel4 = new JLabel();

  //Construct the frame
  public OvenFrame() {
    enableEvents(AWTEvent.WINDOW_EVENT_MASK);
    try {
      jbInit();
    }
    catch(Exception e) {
      e.printStackTrace();
    }
  }
  //Component initialization
  private void jbInit() throws Exception  {
    /*------------------我的微波炉初始化开始---------------------*/
    titledBorder1 = new TitledBorder("");

    cookButton.subscribe(timCookBtnObs);//计时器预定烹饪按钮单击事件
    cookButton.subscribe(beepBtnObs);//鸣叫器预定烹饪按钮单击事件

    cancelButton.subscribe(timCanlBtnObs);//计时器预定取消按钮单击事件
    cancelButton.subscribe(beepBtnObs);//鸣叫器预定取消按钮单击事件
    cancelButton.subscribe(lgtCanlBtnObs);//指示灯预定取消按钮单击事件

    timer.subscribeTimerExpired(beepTimExpObs);//鸣叫器预定计时器超时事件
    timer.subscribeTimerOn(lgtTimOnObs);//灯预定计时器开始计时事件
    timer.subscribeTimerExpired(lgtTimExpObs);//灯预定计时器超时事件
    timer.subscribeTimerOff(pwtTimOffObs);//功率管预定计时器结束计时事件
    timer.subscribeTimerOn(pwtTimOnObs);//功率管预定计时器开始计时事件
    timer.subscribeTimerExpired(pwtTimExpObs);//功率管预定计时器计时超时事件

    door.subscribeDoorOpen(pwtDoorOpenObs);//功率管预定开门事件
    door.subscribeDoorOpen(timDoorOpenObs);//计时器预定开门事件
    door.subscribeDoorClose(timDoorCloseObs);//计时器预定关门事件
    door.subscribeDoorClose(lgtDoorCloseObs);//灯预定关门事件
    door.subscribeDoorOpen(lgtDoorOpenObs);//灯预定开门事件

    contentPane = (JPanel) this.getContentPane();
    jButton_cookButton.addActionListener(new OvenFrame_jButton_cookButton_actionAdapter(this));
    contentPane.setLayout(xYLayout1);
    this.setEnabled(true);
    this.setForeground(Color.cyan);
    this.setResizable(false);
    this.setSize(new Dimension(396, 279));
    this.setTitle("我的微波炉");
    jButton_cancelButton.setBackground(Color.orange);
    jButton_cancelButton.setText("取消");
    jButton_cancelButton.addActionListener(new OvenFrame_jButton_cancelButton_actionAdapter(this));
    jRadioButton_DoorSwitch.setBackground(Color.orange);
    jRadioButton_DoorSwitch.setPreferredSize(new Dimension(69, 25));
    jRadioButton_DoorSwitch.setBorderPainted(true);
    jRadioButton_DoorSwitch.setRolloverIcon(null);
    jRadioButton_DoorSwitch.setText("开门");
    jRadioButton_DoorSwitch.addActionListener(new OvenFrame_jRadioButton_DoorSwitch_actionAdapter(this));
    jButton_cookButton.setBackground(Color.orange);
    jButton_cookButton.setIcon(null);
    jButton_cookButton.setText("烹饪");
    jLabel_light.setDisabledIcon(null);
    jLabel_light.setIcon(icon_light_off);
    jLabel_door.setIcon(icon_door_close);
    jLabel_door.setText("");
    jLabel_powerTube.setIcon(icon_powerTube_off);
    jLabel_powerTube.setText("");
    jLabel1.setText("炉门:");
    jLabel2.setText("功率管:");
    contentPane.setBackground(new Color(59, 190, 85));
    contentPane.setEnabled(true);
    contentPane.setForeground(Color.gray);
    contentPane.setBorder(BorderFactory.createRaisedBevelBorder());
    contentPane.setDebugGraphicsOptions(0);
    contentPane.setDoubleBuffered(true);
    contentPane.setOpaque(true);
    jLabel3.setIcon(icon_duck);
    jLabel3.setText("");
    jTextField_timeRemain.setEditable(false);
    jTextField_timeRemain.setSelectedTextColor(Color.white);
    jTextField_timeRemain.setText("");
    jTextField_timeRemain.setHorizontalAlignment(SwingConstants.CENTER);
    jLabel4.setText("剩余时间:");
    contentPane.add(jButton_cookButton, new XYConstraints(317, 67, -1, -1));
    contentPane.add(jRadioButton_DoorSwitch,      new XYConstraints(319, 159, 56, -1));
    contentPane.add(jLabel2, new XYConstraints(11, 23, -1, -1));
    contentPane.add(jLabel_powerTube, new XYConstraints(59, 18, 25, -1));
    contentPane.add(jLabel3,     new XYConstraints(52, 66, 228, 135));
    contentPane.add(jLabel1, new XYConstraints(133, 21, -1, -1));
    contentPane.add(jLabel_door, new XYConstraints(178, 18, -1, -1));
    contentPane.add(jTextField_timeRemain,  new XYConstraints(114, 219, 58, -1));
    contentPane.add(jLabel4,  new XYConstraints(59, 221, 52, 15));
    contentPane.add(jLabel_light, new XYConstraints(242, 13, -1, -1));
    contentPane.add(jButton_cancelButton, new XYConstraints(318, 113, -1, -1));
  }

  public void  workingState(){ //监听微波炉工作状态,以便界面显示
    while(true){
      if(door.getIsOpen()){//门处于打开状态
        jLabel_door.setIcon(icon_door_open);//显示开启的门
      }else{//门闭合
        jLabel_door.setIcon(icon_door_close);//显示关闭的门
      }
      if(light.getIsOn()){//灯开了
        jLabel_light.setIcon(icon_light_on);//显示开了的灯
      }else{//灯关了
        jLabel_light.setIcon(icon_light_off);//显示关了的灯
      }
      if(powertube.getIsOn()){//功率管开了
        jTextField_timeRemain.setText(Integer.toString(timer.getTime_remaining()));//显示烹饪时候剩余时间
        jLabel_powerTube.setIcon(icon_powerTube_on);//显示功率管处于工作状态的图标
      }else{//功率管关了
        jTextField_timeRemain.setText("0");//显示烹饪剩余时间=0,即烹饪结束
        jLabel_powerTube.setIcon(icon_powerTube_off);//显示功率管处于非工作状态的图标
      }
      try{
        Thread.sleep(TIMEINTERVAL);//每个时间TIMEINTERVAL 监听一次微波炉个组成元素的状态
      }catch(InterruptedException e){}
    }
  }
/*
  JProgressBar jProgressBar1 = new JProgressBar(0,60);
  public void Progress(){//进度条,未实现
    num=0;
    int totalTime=-1;
 while(true){
      if((timer.getIsOn()&&timer.getTime_remaining()==0)){//剩余时间==0并且isOn,说明烹饪结束
        return;
      }
      if(totalTime==-1&&timer.getTime_remaining()!=0){
        totalTime=timer.getTime_remaining();
      }

      System.out.println("进度条位置:"+((totalTime-timer.getTime_remaining())==-1?0:totalTime-timer.getTime_remaining()));
      jProgressBar1.setValue((totalTime-timer.getTime_remaining())==-1?0:totalTime-timer.getTime_remaining());
      try{
        Thread.sleep(1000);//TIMEINTERVAL);
      }catch(InterruptedException e){}
//      num+=95;
    }
  }
  JProgressBar current = new JProgressBar(0,2000);
  //JProgressBar current = new JProgressBar();
 public void iterate(){
   num=0;
       while(num<2000){
         System.out.println("current:"+num);
                current.setValue(num);
                try{
                        Thread.sleep(1000);
                }
                catch(InterruptedException e){}
                num+=95;
        }
}
*/
  //Overridden so we can exit when window is closed
  protected void processWindowEvent(WindowEvent e) {
    super.processWindowEvent(e);
    if (e.getID() == WindowEvent.WINDOW_CLOSING) {
      System.exit(0);
    }
  }

  void jButton_cookButton_actionPerformed(ActionEvent e) {//烹饪按钮
    cookButton.pressed();//给烹饪按钮发消息
  }
  void jButton_cancelButton_actionPerformed(ActionEvent e) {//取消按钮
    cancelButton.pressed();//给取消按钮发消息
  }

  void jRadioButton_DoorSwitch_actionPerformed(ActionEvent e) {
System.out.println(jRadioButton_DoorSwitch.isSelected());
    if(jRadioButton_DoorSwitch.isSelected()){
      jRadioButton_DoorSwitch.setText("关门");
      door.open();//打开门(radio处于选中状态)isOpen=true;
    }
    else{
      jRadioButton_DoorSwitch.setText("开门");
      door.close();//关闭门(radio非选中状态) isOpen=false;
    }
  }
}

class OvenFrame_jButton_cookButton_actionAdapter implements java.awt.event.ActionListener {
  OvenFrame adaptee;

  OvenFrame_jButton_cookButton_actionAdapter(OvenFrame adaptee) {
    this.adaptee = adaptee;
  }
  public void actionPerformed(ActionEvent e) {
    adaptee.jButton_cookButton_actionPerformed(e);
  }
}

class OvenFrame_jButton_cancelButton_actionAdapter implements java.awt.event.ActionListener {
  OvenFrame adaptee;

  OvenFrame_jButton_cancelButton_actionAdapter(OvenFrame adaptee) {
    this.adaptee = adaptee;
  }
  public void actionPerformed(ActionEvent e) {
    adaptee.jButton_cancelButton_actionPerformed(e);
  }
}

class OvenFrame_jRadioButton_DoorSwitch_actionAdapter implements java.awt.event.ActionListener {
  OvenFrame adaptee;

  OvenFrame_jRadioButton_DoorSwitch_actionAdapter(OvenFrame adaptee) {
    this.adaptee = adaptee;
  }
  public void actionPerformed(ActionEvent e) {
    adaptee.jRadioButton_DoorSwitch_actionPerformed(e);
  }
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -