Могу ли я добавить слушатель действия в JLabel? - PullRequest
15 голосов
/ 10 марта 2011

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

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

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

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

Метод addActionListener (ChipsListener) не определен для типа JLabel

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

Ответы [ 3 ]

26 голосов
/ 10 марта 2011

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

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

11 голосов
/ 10 марта 2011

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

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

button.setBorderPainted( false );

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

10 голосов
/ 05 января 2016
/*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");
                }

            });
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...