我知道我应该使用“actionlistener”,所以我想下面的代码应该可以工作,但它没有。
if (e.getSource() == "but0") { // but0 is name of button with number "0"
String aaa = but0.getText();
field.setText(aaa);
}
我知道我应该使用“actionlistener”,所以我想下面的代码应该可以工作,但它没有。
if (e.getSource() == "but0") { // but0 is name of button with number "0"
String aaa = but0.getText();
field.setText(aaa);
}
从 JavaDocs,在java.awt.event.EventObject
:
public Object getSource()
最初发生事件的对象。
不要与字符串进行比较,而是尝试与按钮本身进行比较:
if (e.getSource() == but0) {
String aaa = but0.getText();
field.setText(aaa);
}
应使用 .equals() 读取按钮标题。== 在这里不起作用。
尝试e.getSource().getText().equals("0")
或者直接比较对象为 e.getSource()==but0
创建时在数组中添加按钮
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.,
}