Ответ 1
Добавьте MouseListener
в JLabel
.
Поскольку JLabel
- это Component
, вы можете добавить к нему MouseListener
. Используйте этот интерфейс и напишите событие mouseClicked
на MouseListener
для обработки щелчка.
Я хочу заменить JButton на JLabel, и я хочу, чтобы мой код выполнял некоторые действия при щелчке по JLabel.
Когда у меня был JButton, я использовал обработчик действий для обработки кликов на кнопке:
myButton.addActionListener(new clicksListener(arg1,this))
Когда я заменил myButton
на myLabel
, я получил следующее сообщение об ошибке в Eclipse:
Метод addActionListener (ChipsListener) является undefined для типа JLabel
Но я знаю, что должно быть возможно привязать обработчик кликов к JLabel. Кто-нибудь знает, как это можно сделать?
Добавьте MouseListener
в JLabel
.
Поскольку JLabel
- это Component
, вы можете добавить к нему MouseListener
. Используйте этот интерфейс и напишите событие mouseClicked
на MouseListener
для обработки щелчка.
Более простой подход - просто использовать JButton, поскольку он уже поддерживает эту функциональность с помощью ActionListener.
Вы можете сделать JButton похожим на JLabel, используя:
button.setBorderPainted( false );
Этот подход предназначен для того, когда вы хотите обрабатывать mouseClick, поскольку гарантируется, что ActionEvent будет сгенерирован, тогда как событие mouseClicked при использовании MouseListener не может быть сгенерировано во всех ситуациях, что может смутить пользователя.
/*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");
}
});