Установите JButton так, чтобы его нельзя было нажать, или для временного отключения ActionListener

#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 ) класса и вместо этого отключить / включить действие. Какие бы элементы пользовательского интерфейса ни были сформированы в результате действия, они будут соответственно отключены / включены.