按钮只打印一个数字

Button only prints one number

我有一个用于计算器的数字键盘,当我按下按钮时 JTextField 上只出现一个数字,即使我按了两次按钮。如何允许用户多次按下按钮以使数字在 JTextField 上出现不止一次。例如,如果有人按了 one 键两次,就会出现 11。这是我这部分的代码,如有任何帮助,我们将不胜感激,谢谢!

@Override
public void actionPerformed(ActionEvent e) {
    if(e.getActionCommand().equals("1")){
        numField.setText("1");
    }
}

.setText 将设置里面的任何东西。

建议: 有一个全局变量并添加到它和 setText 到那个全局变量。

您在代码中所做的是设置文本“1”... 看看这一行改吧,怎么想办法让你把已经在textField中的字符串加到末尾?

numField.setText("1");

像这样获取旧文本并在其上附加新文本

@Override
public void actionPerformed(ActionEvent e) {
    if(e.getActionCommand().equals("1")){
        numField.setText(numField.getText() + "1");
    }
}

"set" 设置字段文本。它不会添加到字段文本中。给定上面的代码,无论您按下按钮两次还是三十次,结果始终是该字段中的一个“1”。

将结果保存在不同的变量中,然后显示该变量。

StringBuilder accumulator = new StringBuilder();

@Override
public void actionPerformed(ActionEvent e) {
    accumulator.append( e.getActionCommand() );
    numField.setText( accumulator.toString() );
}

未测试。

另一种策略:

   final Set<String> actionSet = new HashSet<String>();
   actionSet.add("1");
   actionSet.add("2");
   actionSet.add("3");

   @Override
   public void actionPerformed(ActionEvent e) {
       if(actionSet.contains(e.getActionCommand())){
           numField.setText(numField.getText() + e.getActionCommand());
       }
   }