在事件之后添加新按钮

时间:2019-05-12 04:25:16

标签: java awt

编写一个程序,以在按下+1按钮时使计数器递增,然后在计数器达到一定数量时,删除+1按钮并将其替换为+2按钮,依此类推。我首先创建两个按钮,但只是将btnCount1设置为setVisible(false)。当特定数字过去时,我使btnCount不可见,使btnCount1可见,并从此处递增2。当它达到10次点击时,btnCount消失,但是btnCount1没有出现。

我尝试制作一个if(arg0.equals(btnCount1)),然后从那里递增2。我尝试将add(btnCount1)放入else if语句中,以便在elseif条件成立后创建它。

public class AWTCounter extends Frame implements ActionListener
private Label lblCount;
private TextField tfCount;
private Button btnCount;
private Button btnCount1;
private int count = 0;

public AWTCounter() {
    setLayout(new FlowLayout());


    lblCount = new Label("Counter");
    add(lblCount);

    tfCount = new TextField(count + "",10);
    tfCount.setEditable(false);
    add(tfCount);

    btnCount = new Button("Add 1");
    btnCount1 = new Button("Add 2");
    add(btnCount);
    add(btnCount1);
    btnCount1.setVisible(false);

    btnCount.addActionListener(this);
    btnCount1.addActionListener(this);


    setTitle("AWT Counter");
    setSize(500,500);

}

public static void main(String[]args) {
    AWTCounter app = new AWTCounter();
}
public void actionPerformed(ActionEvent arg0) {
    if(count <= 10) {
        ++count; //Increase the counter value
        tfCount.setText(count + "");
    }else if(count > 10) {
        btnCount.setVisible(false);
        btnCount1.setVisible(true);
        count += 2;
        tfCount.setText(count + "");
    }
}

1 个答案:

答案 0 :(得分:0)

这里更好的解决方案是仅使用一个按钮对象和一个用于当前增量量的单独变量。当您达到所需的计数时,将增量和change the button's label增加到新值。

还有一些其他可以做得更好的事情。

  • 如果不在整数之前或之后添加单词,请使用String.valueOf()代替int + ""来表示String的整数。
  • 不要添加明显的代码注释。 (例如'increment variable x''将textString设置为新值'
  • 为方法参数和变量使用描述性名称。
  • 对于不需要像计数器显示那样可编辑或可选的文本,请使用Labels而不是TextFields

我也将lblCount的名称也更改为lblTitle,因为将您的tfCount更改为Label会在逻辑上占用该名称,并且{ {1}}更有意义。

这是实现lblTitle的更好方法:

actionPerformed