首页 > 代码库 > 灯泡问题

灯泡问题

假设需要制造一个带有四个按钮和两个灯泡的盒子并具有以下功能:

    ⑴ 有四个按钮输入,分别称为B1,B2,B3和B4;

    ⑵ 有两个灯泡作为输出,分别称为L1和L2;

    ⑶ B1是打开电源的按钮;

    ⑷ B4是关闭电源的按钮;

    ⑸ B2和B3 是操作按钮;

    ⑹ 在B1被按下后及B4被按下前,系统应称为电源打开状态;

    ⑺ 在B4被按下后及B1被按下前,系统应称为电源关闭状态;

    ⑻ 在电源关闭状态下,B2和B3按钮不起作用;

    ⑼ 在电源关闭状态下,灯应不亮;

    ⑽ 从最近一次电源打开状态算起,如果B2被按下的次数比B3被按下的次数多,L1亮,否则L2亮。

    ⑾ 任何时候都不能有一个以上的灯泡亮;

    ⑿ 如果其中的一个灯泡出现故障,另一个灯泡应以2秒钟的间隔闪烁,而不管B2和B3的操作过程。当B4按下时,闪烁停止;当B1被按下时,闪烁重新开始。当故障被排除后闪烁停止,系统恢复正常状态。

import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.*;
public class Box {
JFrame frame;
JButton button1,button2,button3,button4;
JLabel label1,label2;
JPanel panel1,panel2;
boolean off =false;
public static void main(String args[])
{
Box box=new Box();
box.go();
}
void go(){
frame=new JFrame("盒子");
button1=new JButton("B1");
button2=new JButton("B2");
button3=new JButton("B3");
button4=new JButton("B4");
button1.setToolTipText("打开电源");
button2.setToolTipText("L1灯亮");
button3.setToolTipText("L2灯亮");
button4.setToolTipText("关闭电源");
label1=new JLabel();
label1.setBorder(BorderFactory.createLineBorder(Color.white,60));
label2=new JLabel();
label2.setBorder(BorderFactory.createLineBorder(Color.white,60));
JPanel panel1 =new JPanel();
JPanel panel2 =new JPanel();
panel1.add(label1,BorderLayout.WEST);
panel1.add(label2,BorderLayout.EAST);
panel2.add(button1);
panel2.add(button2);
panel2.add(button3);
panel2.add(button4);
Listener listener=new Listener();
button1.addActionListener(listener);
button2.addActionListener(listener);
button3.addActionListener(listener);
button4.addActionListener(listener);
frame.add(panel1,BorderLayout.NORTH);
frame.add(panel2,BorderLayout.SOUTH);
frame.setBackground(Color.BLACK);
frame.setSize(350,250);
frame.setDefaultCloseOperation(1);
frame.setVisible(true);
frame.setResizable(false);
}
class Listener implements ActionListener// 内部类,便于调用Box类中的成员变量on_off
{
public void actionPerformed(ActionEvent e)
{
String s=e.getActionCommand();
if (s.equals("B1"))
{
off =true;
}
if (off) {
if (s.equals("B2"))
{
label1.setBorder(BorderFactory.createLineBorder(Color.yellow,60));
label2.setBorder(BorderFactory.createLineBorder(Color.white,60));
label1.setOpaque(true);
label2.setOpaque(true);
}
if (s.equals("B3"))
{
label1.setBorder(BorderFactory.createLineBorder(Color.white,60));
label2.setBorder(BorderFactory.createLineBorder(Color.yellow,60));
label1.setOpaque(true);
label2.setOpaque(true);
}
if (s.equals("B4"))
{
label1.setBorder(BorderFactory.createLineBorder(Color.white,60));
label2.setBorder(BorderFactory.createLineBorder(Color.white,60));
label1.setOpaque(true);
label2.setOpaque(true);
off=false;
}
}
else
{
label1.setBorder(BorderFactory.createLineBorder(Color.white,60));
label2.setBorder(BorderFactory.createLineBorder(Color.white,60));
label1.setOpaque(true);
label2.setOpaque(true);
}
}
}
}

灯泡问题