import java.awt.*;importjava.awt.event.ActionEvent;importjava.awt.event.ActionListener;import javax.swing.*;public classBox {
JFrame frame;
JButton button1,button2,button3,button4;
JLabel label1,label2;
JPanel panel1,panel2;boolean off =false;public static voidmain(String args[])
{
Box box=newBox();
box.go();
}voidgo(){
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=newJLabel();
label1.setBorder(BorderFactory.createLineBorder(Color.white,60));
label2=newJLabel();
label2.setBorder(BorderFactory.createLineBorder(Color.white,60));
JPanel panel1=newJPanel();
JPanel panel2=newJPanel();
panel1.add(label1,BorderLayout.WEST);
panel1.add(label2,BorderLayout.EAST);
panel2.add(button1);
panel2.add(button2);
panel2.add(button3);
panel2.add(button4);
Listener listener=newListener();
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 voidactionPerformed(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);
}
}
}
}