У меня есть java JPanel с 16 JCheckBoxes, и я хочу, чтобы пользователь выбирал хотя бы один, прежде чем отправлять форму. Единственный способ, которым я это знаю, - это огромный оператор if, который смотрит на логическое значение метода isSelected(), но это кажется неэффективным. Так что мне было интересно, есть ли более быстрый способ проверить, не сняты ли все ящики.Быстрый выбор, если все флажки не выбраны
ответ
Вы не нуждаетесь в заявлении if
. Вы можете сделать это с большой логическое выражение с помощью ||
:
boolean somethingChecked = box1.isSelected()
|| box2.isSelected()
|| ...;
или, если коробки находятся в массиве (более предпочтительно), цикл:
boolean somethingSelected = false;
for (JCheckBox box : boxes) {
if (box.isSelected()) {
somethingSelected = true;
break;
}
}
В качестве альтернативы, вы можете использовать ItemListener
прилагается к каждому JCheckBox
, чтобы отслеживать количество проверяемых коробок:
int selectionCount;
ItemListener boxListener = new ItemListener() {
@Override public void itemStateChanged(ItemEvent e) {
if (e.getStateChange() == ItemEvent.SELECTED) {
selectionCount++;
} else {
selectionCount--;
}
}
};
(Обратите внимание, что если это все, что ItemListener
делает, петь le экземпляр может быть прикреплен ко всем ячейкам.) selectionCount
должен быть инициализирован на количество первоначально проверенных ящиков. Затем в соответствующей точке (точках) в вашем коде вы можете просто проверить, больше ли selectionCount
больше нуля.
Это будет делать трюк я считаю:
public boolean validatePanel(JPanel panel) {
for (Component component : panel.getComponents()) {
if(component instanceof JCheckBox){
JCheckBox c = (JCheckBox) component;
if(c.isSelected()){
return true;
}
}
}
return false;
}
Этот метод получает JPanel и получить все компоненты на ней. Затем проверьте все, тогда, если это флажок, он передаст компонент в CheckBox, чтобы получить доступ к методу isSelected
. Если какой-либо флажок установлен, он вернет true, если он закончит foreach
, не возвращая ни одного истинного, это означает, что флажок не выбран.
- 1. Не все флажки выбраны
- 2. Выбрать все, если все флажки выбраны, угловые js
- 3. Отключить все флажки, когда выбраны «все» CheckBoxes
- 4. Почему флажки не выбраны?
- 5. Снимите флажок «Выбрать все флажки, если отменяет выбор списка».
- 6. Если все входы не выбраны/сосредоточены
- 7. Настройка состояния на 0, если не выбраны флажки
- 8. выйти из цикла for, если не выбраны флажки
- 9. Проверьте, выбраны или не выбраны некоторые флажки с селеном WebDriver
- 10. Флажки не выбраны и меньше размера
- 11. , когда не выбраны флажки показать сообщение
- 12. Bootstrap/Javascript - флажки, если они выбраны, а также отменять выбор всех
- 13. Быстрый способ проверить, не установлены ли все флажки?
- 14. Все флажки возвращены, даже если «"
- 15. Если условие выбрало все флажки
- 16. Найти, если выбраны Флажки в репитере, из которых пол
- 17. Выберите все элементы, если все флажки сняты.
- 18. найти все флажки, которые НЕ проверяются
- 19. Отметить родительский, если выбраны все дети JQuery
- 20. кнопка jquery show, если выбраны все selectboxes
- 21. Кнопка включения JQuery, если выбраны все флажки и добавлена кнопка css для отключения.
- 22. . Выбраны все выбранные классы.
- 23. Получить все варианты от окна Выбора (выбраны и не выбраны)
- 24. Самый быстрый способ создать флажки
- 25. Отключить кнопку, если все флажки сняты.
- 26. Изменить цвет строки, если все флажки установлены?
- 27. Отключить все флажки, если один активный
- 28. как отменить выбор ячеек, когда все ячейки выбраны в `dhtmlxgrid`?
- 29. Как снять флажок, если все флажки сняты?
- 30. Отменить выбор заголовка флажка, если не все флажки в строках gridview отмечены
Правильно, и у меня есть слушатель. Мне было интересно, есть ли более быстрый способ проверить логическое использование слушателей. Я не хочу проходить и проверять каждую кнопку. –