0

我知道我应该使用“actionlistener”,所以我想下面的代码应该可以工作,但它没有。

if (e.getSource() == "but0") { // but0 is name of button with number "0"
    String aaa = but0.getText();
    field.setText(aaa);
}
4

3 回答 3

0

从 JavaDocs,在java.awt.event.EventObject

public Object getSource()

最初发生事件的对象。

不要与字符串进行比较,而是尝试与按钮本身进行比较:

if (e.getSource() == but0) {
    String aaa = but0.getText();
    field.setText(aaa);
}
于 2013-07-15T08:52:43.953 回答
0

应使用 .equals() 读取按钮标题。== 在这里不起作用。

尝试e.getSource().getText().equals("0")

或者直接比较对象为 e.getSource()==but0

于 2013-07-15T08:33:30.920 回答
0

创建时在数组中添加按钮

ArrayList<JButton> buttonA = new ArrayList();
for(int i=0;i<=9;i++) {
 String num_ = String.valueOf(i);
 JButton button = new JButton(num_);
 button.setName(num_);
 buttonA.add(button);
  // do remaining stuff
}

在行动

 public void actionPerformed(ActionEvent e) {
   if(buttonA.contains(e.getSource())) {
            JButton btn = (JButton) e.getSource();
            display.setText(display.getText() + btn.getName());
   } else if() { // operations like +,- etc.,

   }
于 2013-07-15T08:50:42.443 回答