首页 > 代码库 > 作业一
作业一
假设需要制造一个带有四个按钮和两个灯泡的盒子并具有以下功能:
⑴ 有四个按钮输入,分别称为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 DP {
JFrame jf;
JButton jb1,jb2,jb3,jb4;
JLabel jl1,jl2;
JPanel jp1,jp2;
boolean on_off = false;
public static void main(String args[]){
DP dp=new DP();
dp.go();
}
void go(){
jf=new JFrame("灯泡");
jb1=new JButton("B1");
jb2=new JButton("B2");
jb3=new JButton("B3");
jb4=new JButton("B4");
jb1.setToolTipText("电源开");
jb2.setToolTipText("L1灯亮");
jb3.setToolTipText("L2灯亮");
jb4.setToolTipText("电源关");
jl1=new JLabel();
jl1.setBorder(BorderFactory.createLineBorder(Color.white, 50));
jl2=new JLabel();
jl2.setBorder(BorderFactory.createLineBorder(Color.white, 50));
JPanel jp1=new JPanel();
JPanel jp2=new JPanel();
jp1.add(jl1,BorderLayout.WEST);
jp1.add(jl2,BorderLayout.EAST);
jp2.add(jb1);
jp2.add(jb2);
jp2.add(jb3);
jp2.add(jb4);
Monitor mt=new Monitor();
jb1.addActionListener(mt);
jb2.addActionListener(mt);
jb3.addActionListener(mt);
jb4.addActionListener(mt);
jf.add(jp1,BorderLayout.NORTH);
jf.add(jp2, BorderLayout.SOUTH);
jf.setBackground(Color.BLACK);
jf.setSize(300, 200);
jf.setDefaultCloseOperation(1);
jf.setVisible(true);
}
class Monitor implements ActionListener{
public void actionPerformed(ActionEvent e) {
String s=e.getActionCommand();
if (s.equals("B1")) on_off = true;
if (on_off) {
if (s.equals("B2")) {
jl1.setBorder(BorderFactory.createLineBorder(Color.yellow, 50));
jl2.setBorder(BorderFactory.createLineBorder(Color.white, 50));
jl1.setOpaque(true);
jl2.setOpaque(true);
}
if (s.equals("B3")) {
jl1.setBorder(BorderFactory.createLineBorder(Color.white, 50));
jl2.setBorder(BorderFactory.createLineBorder(Color.yellow, 50));
jl1.setOpaque(true);
jl2.setOpaque(true);
}
if (s.equals("B4")) {
jl1.setBorder(BorderFactory.createLineBorder(Color.white, 50));
jl2.setBorder(BorderFactory.createLineBorder(Color.white, 50));
jl1.setOpaque(true);
jl2.setOpaque(true);
on_off = false;
}
}
else {
jl1.setBorder(BorderFactory.createLineBorder(Color.white, 50));
jl2.setBorder(BorderFactory.createLineBorder(Color.white, 50));
jl1.setOpaque(true);
jl2.setOpaque(true);
}
}
作业一