Слушатель действий не работает, когда я нажимаю кнопку - PullRequest
0 голосов
/ 24 октября 2018

Я получил этот код, но когда я его запускаю, 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 голосов
/ 24 октября 2018

удалите эти 2 строки из конструктора

this.jButton1 = new JButton();
this.jButton2 = new JButton();

Поскольку метод addLsiteners не выдавал никаких исключений, это означает, что вы уже создали эти JButtons.если вы создадите экземпляр, тогда эти поля будут иметь ссылку на экземпляры, отличные от экземпляра, в который вы добавили прослушиватель действия.

0 голосов
/ 24 октября 2018

Вы должны написать что-то в методе обработчика:

@Override
public void actionPerformed(ActionEvent event) {
   System.out.println("button pressed!");
}

и ваш класс должен реализовать интерфейс ActionListener

В качестве альтернативы вы можете использовать лямбда-выражения java8:

btn.addActionListener(e -> {System.out.println("button pressed!)});
...