java - 在事件后添加新按钮

标签 java awt

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

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

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 + "");
    }
}

最佳答案

这里更好的解决方案是只有一个按钮对象和一个单独的变量来表示当前增量。当达到所需计数时,增加增量并 change the button's label到新值。

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

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

我个人会将 lblCount 的名称更改为 lblTitle 之类的名称,因为将您的 tfCount 更改为 Label 逻辑上会采用该名称,并且 lblTitle 更有意义。

这是实现 actionPerformed 的更好方法:

private int increment = 1;
private Label lblCount;
...
public void actionPerformed(ActionEvent ignore) {
    if(count == 10) {
        btnCount.setLabel("Add " + (++increment));
    }

    lblCount.setText(String.valueOf(count += increment));
}

关于java - 在事件后添加新按钮,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56096213/

相关文章:

java - ActionListener 回调到另一个类

java - 测量旋转字符串的像素高度Java

java - 框架的最佳布局

java - 有没有办法使用 Graphics 类绘制可变矩形

java - 从主题添加按钮到预先存在的工具栏

Java - 如何创建一个矩形生成方法,以生成多个具有不同坐标的矩形?

java - Struts 2 异常拦截器的 Log4j 记录器

java - For 循环和 while 循环跳过 Scanner

java - 相等的对象必须具有相等的哈希码?

Java-仅从 jre/lib/fonts 加载字体