Как добавить ActionListener на JButton в Java - PullRequest
25 голосов
/ 12 ноября 2008
private JButton jBtnDrawCircle = new JButton("Circle");
private JButton jBtnDrawSquare = new JButton("Square");
private JButton jBtnDrawTriangle = new JButton("Triangle");
private JButton jBtnSelection = new JButton("Selection");

Как добавить слушатели действий к этим кнопкам, чтобы из основного метода я мог вызвать actionperformed для них, чтобы при их нажатии я мог вызывать их в моей программе?

Ответы [ 4 ]

46 голосов
/ 12 ноября 2008

Два способа:

1. Реализуйте ActionListener в своем классе, затем используйте jBtnSelection.addActionListener(this); Позже вам нужно будет определить ментод, public void actionPerformed(ActionEvent e). Однако выполнение этого для нескольких кнопок может привести к путанице, поскольку метод actionPerformed должен будет проверить источник каждого события (e.getSource()), чтобы увидеть, с какой кнопки оно произошло.

2. Использовать анонимные внутренние классы:

jBtnSelection.addActionListener(new ActionListener() { 
  public void actionPerformed(ActionEvent e) { 
    selectionButtonPressed();
  } 
} );

Позже вам нужно будет определить selectionButtonPressed(). Это работает лучше, когда у вас есть несколько кнопок, потому что ваши вызовы отдельных методов для обработки действий находятся рядом с определением кнопки.

Второй метод также позволяет напрямую вызывать метод выбора. В этом случае вы могли бы вызвать selectionButtonPressed(), если тоже происходит какое-то другое действие, например, когда таймер отключается или что-то в этом роде (но в этом случае ваш метод будет называться как-то иначе, возможно, selectionChanged()).

7 голосов
/ 12 ноября 2008

Лучше всего просмотреть учебники по Java Swing , в частности учебник по кнопкам .

Фрагмент краткого кода:

jBtnDrawCircle.addActionListener( /*class that implements ActionListener*/ );
1 голос
/ 11 ноября 2018

idk, если это работает, но я сделал имена переменных

public abstract class beep implements ActionListener {
public static void main(String[] args) {
    JFrame f = new JFrame("beeper");
    JButton button = new JButton("Beep me");
    f.setVisible(true);
    f.setSize(300, 200);
    f.add(button);
    button.addActionListener(new ActionListener() {
        public void actionPerformed(ActionEvent e) {
            //insert code here
        }
    } );

}

}

0 голосов
/ 12 ноября 2008

Я не совсем слежу, но чтобы добавить слушателя действия, вы просто вызываете addActionListener (из кнопки Abstract). Если это не полностью отвечает на ваш вопрос, можете ли вы предоставить более подробную информацию?

...