gpt4 book ai didi

java - 在事件后添加新按钮

转载 作者:行者123 更新时间:2023-12-02 05:45:55 25 4
gpt4 key购买 nike

编写一个程序,在按下 +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/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com