Как заставить jButton изменить свой цвет, когда выбраны все параметры?

Привет всем :) Я хочу, чтобы мой JButton менял свой цвет, когда выбраны все параметры, но я не знаю, как...

У меня есть ButtonGroup для 6 переключателей, 6 флажков и текстовое поле

Когда выбран переключатель И установлены один или несколько флажков И в текстовом поле есть число (или что-то еще), JButton меняет цвет на зеленый. Я не знаю, куда поместить прослушиватель действий или с чего начать, поэтому, если кто-то достаточно любезен, чтобы помочь мне, я был бы очень благодарен.

Хорошо, вы можете найти здесь часть кода, как вы просили, но я не думаю, что это актуально. По сути, это продолжение моего предыдущего вопроса.


person Alejandra Uzelac    schedule 19.06.2012    source источник
comment
Вы должны показать код, иллюстрирующий то, что вы уже собрали. В противном случае вы, по сути, просите кого-то написать обработчик вашей формы.   -  person Marvo    schedule 20.06.2012
comment
Вы добавляете ActionListener ко всем элементам, которые необходимо выбрать, чтобы активировать JButton. Слушатель проверит, что все, что нужно выбрать, выбрано. Я предлагаю, чтобы вместо того, чтобы устанавливать цвет фона JButton, который чреват проблемами внешнего вида, вы вместо этого меняли включенное состояние JButton с помощью метода setEnabled(boolean enabled).   -  person Hovercraft Full Of Eels    schedule 20.06.2012
comment
+1 за setEnabled предложение @HovercraftFullOfEels   -  person Robin    schedule 20.06.2012


Ответы (1)


Если у вас просто есть метод, который настраивает цвет кнопки в зависимости от состояния кнопок и текстового поля, например.

public void updateButtonColor(){
  if ( isAtLeastOneRadioButtonSelected() && isAtLeastOneCheckBoxSelected() && 
       textFieldContainsNumber() ){
      changeButtonColor( Color.green );
   } else {
      changeButtonColor( Color.red );
   }
}

вы можете добавить слушателей к каждой из переключателей, флажков и текстового поля для вызова этого метода updateButtonColor при изменении соответствующего состояния компонента (например, ItemListener для JCheckBox для обнаружения изменений в выборе)

person Robin    schedule 19.06.2012
comment
@AlejandraUzelac руководство по кнопкам Swing содержит примеры того, как прикреплять прослушиватели к ним, и эти слушатели могли затем вызвать этот метод - person Robin; 20.06.2012
comment
Я поместил isAtLeastOneRadioButtonSelected (isRadioSelected) и т. д. как логическое значение, для переключателей я поместил событие ItemStateChanged: if (jRadioButton1.isSelected()) { isRadioSelected=true; updateButtonColor(); } Для флажков также и событие ItemStateChanged с кодом: if (checkbox1.getState()==true) { isChecked=true; updateButtonColor(); } Я получаю сообщение об ошибке, но оно все еще работает , но я не могу понять, как проверить, есть ли в jTextBox текст... какое событие следует использовать? - person Alejandra Uzelac; 20.06.2012
comment
@AlejandraUzelac DocumentListeners - это те, которые обновляются при вводе/удалении текста/... из текстового поля. - person Robin; 20.06.2012
comment
Я использую NetBeans, но DocumentListener отсутствует — s15.postimage.org/i7vd48pcr/Untitled.png - person Alejandra Uzelac; 20.06.2012