Подтвердить что ты не робот

Можно ли добавить прослушиватель действий в JLabel?

Я хочу заменить JButton на JLabel, и я хочу, чтобы мой код выполнял некоторые действия при щелчке по JLabel.

Когда у меня был JButton, я использовал обработчик действий для обработки кликов на кнопке:

myButton.addActionListener(new clicksListener(arg1,this))

Когда я заменил myButton на myLabel, я получил следующее сообщение об ошибке в Eclipse:

Метод addActionListener (ChipsListener) является undefined для типа JLabel

Но я знаю, что должно быть возможно привязать обработчик кликов к JLabel. Кто-нибудь знает, как это можно сделать?

4b9b3361

Ответ 1

Добавьте MouseListener в JLabel.

Поскольку JLabel - это Component, вы можете добавить к нему MouseListener. Используйте этот интерфейс и напишите событие mouseClicked на MouseListener для обработки щелчка.

Ответ 2

Более простой подход - просто использовать JButton, поскольку он уже поддерживает эту функциональность с помощью ActionListener.

Вы можете сделать JButton похожим на JLabel, используя:

button.setBorderPainted( false );

Этот подход предназначен для того, когда вы хотите обрабатывать mouseClick, поскольку гарантируется, что ActionEvent будет сгенерирован, тогда как событие mouseClicked при использовании MouseListener не может быть сгенерировано во всех ситуациях, что может смутить пользователя.

Ответ 3

/*add a mouselistener instead and listen to mouse clicks*/
    jlable.addMouseListener(new MouseAdapter() {
                @Override
                public void mouseClicked(MouseEvent e) {
                    System.out.println("Yay you clicked me");
                }

            });