当我按下按钮时,动作侦听器不起作用

时间:2018-10-24 12:20:58

标签: java swing jframe actionlistener

我得到了这段代码,但是当我运行它时,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来创建界面,因此这里没有粘贴生成的代码。

2 个答案:

答案 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。如果重新实例化,则这些字段将引用与您添加了动作侦听器的实例不同的实例。