我得到了这段代码,但是当我运行它时,actionListener
无法正常工作。
代码
public class MenuPrincipal extends javax.swing.JFrame implements ActionListener {
public MenuPrincipal() {
initComponents();
this.setVisible(true);
this.setLocationRelativeTo(null);
this.addListener();
this.jButton1 = new JButton();
this.jButton2 = new JButton();
}
public static void main(String args[]) {
new MenuPrincipal();
}
private void addListener() {
this.jButton1.addActionListener(this);
this.jButton2.addActionListener(this);
JOptionPane.showMessageDialog(null, "Activado");
}
@Override
public void actionPerformed(ActionEvent event) {
if(event.getSource().equals(this.JButton1){
// do something
}
if(event.getSource().equals(this.JButton2){
// do something
}
}
}
我正在使用Netbeans来创建界面,因此这里没有粘贴生成的代码。
答案 0 :(得分:0)
您应该在处理程序的方法中写一些东西:
@Override
public void actionPerformed(ActionEvent event) {
System.out.println("button pressed!");
}
您的类应该实现ActionListener接口
或者,您可以使用java8 lambdas:
btn.addActionListener(e -> {System.out.println("button pressed!)});
答案 1 :(得分:0)
从构造函数中删除这2行
this.jButton1 = new JButton();
this.jButton2 = new JButton();
由于addLsiteners方法没有引发任何异常,所以这意味着您已经实例化了这些JButton。如果重新实例化,则这些字段将引用与您添加了动作侦听器的实例不同的实例。