作业1——灯泡问题

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

    ⑴ 有四个按钮输入,分别称为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();
}
});
}
}

转载于:https://www.cnblogs.com/zxy123/p/6019377.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
叶庆生老师的软件工程与方法学的上机作业,包括: 1. 假设需要制造一个带有四个按钮两个灯泡盒子具有以下功能四个按钮入,分别称为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被按下时,闪烁重新开始。当故障被排除后闪烁停止,系统恢复正常状态。 2.1.一家公司有许多部门,部门名唯一地确定一个部门;每个部门由一名经理管理,也有的经理并不管理任何一个部门;每个部门生产多种产品,每种产品仅由一个部门生产。该公司有许多名员工为之工作,员工又进一步划分为经理和工人两类。每名工人可参加多个工程项目,每个项目需要多名工人;每位经理可以主持多个项目,每个项目仅有一人主持。使用对象模型描述类对象所具有的属性,以及公司类对象提供的服务。 2.2建立一个图书馆系统的用例视图 还有其他很多

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值