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 - 键盘轮询有什么用?

java - Java 中的 apache poi 和 swing 问题

java - 如何判断一个点是否在多边形上?

java - 如何初始化Graphics g?

java - 存在多少素数?

java - 获取星期几,太平洋时间的方法

java - 如何首先在Excelsheet上写入最后插入的数据?

java - 如何使 AWT 组件在渐进式背景图像上透明?使用了 Window()、Panel()、Button() 但失败了

java - 从另一个同步方法调用同步方法,两者都在不同的对象上

java - Android,如何实现 ImageButton 的圆角,然后以编程方式更改颜色?