永发信息网

用JAVA来编写程序

答案:4  悬赏:30  手机版
解决时间 2021-04-30 18:53
假设需要制造一个带有四个按钮和两个灯泡的盒子并具有以下功能:
⑴ 有四个按钮输入,分别称为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 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();
}
});
}
}

全部回答

这个是考你自己的逻辑的啦!自己好好写一些吧!

别人帮你写了也没什么好处!

像是初级JAVA逻辑的课后作业的样子~~囧~~

目的是锻炼逻辑能力……还是自己做吧-。-

不然以后继续学下去有的你头痛的-00-

用几个IF判断就可以结局了.是不是你的作业... ....

我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
心里有一个人,要不要向他告白
当你感到幸福的时候,你又会干什么?(当幸福突
给女朋友送什么书好,送零食给正在追求的女生
LG GM750如何解除网络锁啊?
DNF金罐的袖珍罐怎么打开?
天鹅飞去鸟不归,怀念昔日空费心,云开月下双
保险和基金
跪求蔡依林《我知道你很难过》纯音乐
财运汽修地址在哪,我要去那里办事
怀孕第几个月成形?什么时候b超最好
Q币换R点怎么换
求几部国外经典爱情电影
理发店招收未成年人学徒触犯法律吗?
如何节约流量
QQ2008怎么改模式啊
推荐资讯
网速慢怎么回事
"enjoy with your frends"怎么翻译
谁告诉我什么是爱
关于求生之路2的问题...急急急~~!!!
梦幻西游安装好了 进不去游戏
液溴和汽油混合是不是胶体吖??
临平少年宫有哪些课
大哭过后怎样快速让别人看不出自己哭过。
怎样才能与人为善
谁有亲吻姐姐第三集的网站
如何消除皮肤老化的现象
我的玫瑰花园进不去是怎么回事呢?
正方形一边上任一点到这个正方形两条对角线的
阴历怎么看 ?