#java #swing #jbutton #actionlistener
#java #swing #jbutton #actionlistener
Вопрос:
У меня есть ActionListener на JButtons, и если я нажму на одну из них, я хочу каким-то образом отключить actionlistener на других, не удаляя его.
Возможно ли это или я должен удалить, а затем добавить их ActionListener снова.
Извините. Я забыл упомянуть, что я установил «button.setPressedIcon (значок)», и я не хочу показывать этот значок. Итак, упомянутая кнопка soulution.setEnabled (false) не будет работать.
Комментарии:
1. Почему вы хотите отключить actionlistener, почему бы не отключить кнопку?
Ответ №1:
JButton button = new JButton("hello");
button.setEnabled(false)
Это отключит кнопку, если это необходимо
Ответ №2:
Возможно ли это или я должен удалить, а затем добавить их ActionListener снова.
Вы можете добавить логическую переменную в прослушиватель действий следующим образом:
boolean ignoreEvents = false;
а затем оберните свой action-код в
if (ignoreEvents)
return;
ignoreEvents = true;
// your code here...
ignoreEvents = false;
Просто убедитесь, что код правильно синхронизирован.
С точки зрения пользовательского интерфейса, возможно, было бы лучше отключить кнопки вместо этого.
Ответ №3:
Помимо отключения самих элементов GUI, вы можете создать их с помощью Action
(или AbstractAction
) класса и вместо этого отключить / включить действие. Какие бы элементы пользовательского интерфейса ни были сформированы в результате действия, они будут соответственно отключены / включены.