用JAVA来编写程序
- 提问者网友:焚苦与心
- 2021-04-30 12:24
⑴ 有四个按钮输入,分别称为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被按下时,闪烁重新开始。当故障被排除后闪烁停止,系统恢复正常状态。
- 五星知识达人网友:春色三分
- 2021-04-30 13:40
简单模拟一个。
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
import javax.swing.Timer;
public class ButtonTest extends JFrame {
private JButton B1;
private JButton B2;
private JButton B3;
private JButton B4;
private JLabel L1;
private JLabel L2;
private JPanel pnlbtn;
private JPanel pnllbl;
private JLabel info;
private int b2Count;
private int b3Count;
private Timer timer;
private boolean b2bad;
private boolean b3bad;
private int temp;
private JLabel lblbad;
public ButtonTest()
{
init();
setComponentEventListener();
this.setVisible(true);
}
private void init()
{
setSize(640,480);
Container content=this.getContentPane();
B1=new JButton("B1");
B2=new JButton("B2");
B3=new JButton("B3");
B2.setEnabled(false);
B3.setEnabled(false);
B4=new JButton("B4");
pnlbtn=new JPanel();
pnlbtn.add(B1);
pnlbtn.add(B2);
pnlbtn.add(B3);
pnlbtn.add(B4);
L1=new JLabel("L1",JLabel.CENTER);
L2=new JLabel("L2",JLabel.CENTER);
L1.setOpaque(true);
L2.setOpaque(true);
L1.setForeground(Color.blue);
L2.setForeground(Color.blue);
L1.setBackground(Color.black);
L2.setBackground(Color.black);
L1.setSize(300,300);
pnllbl=new JPanel();
pnllbl.setLayout(null);
L1.setBounds(120, 120, 100, 100);
L2.setBounds(400,120,100,100);
pnllbl.add(L1,BorderLayout.WEST);
pnllbl.add(L2,BorderLayout.EAST);
JPanel pnlinfo=new JPanel();
lblbad=new JLabel("一个灯泡开关10次就会出现故障");
info=new JLabel("红色:开启 黑色:关闭 系统状态:关闭");
pnlinfo.add(lblbad);
pnlinfo.add(info);
content.add(pnlinfo,BorderLayout.NORTH);
content.add(pnllbl,BorderLayout.CENTER);
content.add(pnlbtn,BorderLayout.SOUTH);
}
private void setStatu(boolean statu)
{
B2.setEnabled(statu);
B3.setEnabled(statu);
}
private void btnBad()
{
if(b2Count>10&& b3Count>10 &&b2Count>=b3Count)
{
b2bad=true;
b3bad=false;
timer.start();
return;
}
if(b2Count>10&& b3Count>10 &&b2Count<b3Count)
{
b2bad=false;
b3bad=true;
timer.start();
return;
}
if(b2Count>10)
{
b2bad=true;
b3bad=false;
timer.start();
return;
}
if(b3Count>10)
{
b3bad=true;
b2bad=false;
timer.start();
return;
}
}
private void setComponentEventListener()
{
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
B1.addActionListener(
new ActionListener(){
public void actionPerformed(ActionEvent arg0) {
info.setText(info.getText().substring(0,info.getText().length()-2)+"打开");
setStatu(true);
if(b2Count>b3Count)
{
L1.setBackground(Color.red);
L2.setBackground(Color.black);
}
else if(b2Count<b3Count)
{
L2.setBackground(Color.red);
L1.setBackground(Color.black);
}
else
{
L1.setBackground(Color.red);
L2.setBackground(Color.black);
}
btnBad();
if(b2bad||b3bad)
timer.restart();
}
}
);
B2.addActionListener(
new ActionListener(){
public void actionPerformed(ActionEvent arg0) {
b2Count++;
L1.setBackground(Color.red);
L2.setBackground(Color.black);
btnBad();
}
}
);
B3.addActionListener(
new ActionListener(){
public void actionPerformed(ActionEvent arg0) {
b3Count++;
L2.setBackground(Color.red);
L1.setBackground(Color.black);
btnBad();
}
}
);
B4.addActionListener(
new ActionListener(){
public void actionPerformed(ActionEvent arg0) {
info.setText(info.getText().substring(0,info.getText().length()-2)+"关闭");
setStatu(false);
L1.setBackground(Color.black);
L2.setBackground(Color.black);
timer.stop();
}
}
);
timer=new Timer(2000,new ActionListener(){
public void actionPerformed(ActionEvent arg0) {
temp++;
if(b2bad)
{
if(temp%2!=0)
L1.setBackground(Color.red);
else
L1.setBackground(Color.black);
}
if(b3bad)
{
if(temp%2!=0)
L2.setBackground(Color.red);
else
L2.setBackground(Color.black);
}
}
}
);
}
public static void main(String[]args)
{
SwingUtilities.invokeLater(new Runnable() {
public void run() {
try {
UIManager.setLookAndFeel(UIManager.
getSystemLookAndFeelClassName());
} catch (Exception exception) {
exception.printStackTrace();
}
new ButtonTest();
}
});
}
}
- 1楼网友:千杯敬自由
- 2021-04-30 15:49
这个是考你自己的逻辑的啦!自己好好写一些吧!
别人帮你写了也没什么好处!
- 2楼网友:煞尾
- 2021-04-30 15:05
像是初级JAVA逻辑的课后作业的样子~~囧~~
目的是锻炼逻辑能力……还是自己做吧-。-
不然以后继续学下去有的你头痛的-00-
- 3楼网友:長槍戰八方
- 2021-04-30 14:08
用几个IF判断就可以结局了.是不是你的作业... ....