Как проверить статус флажка в графическом интерфейсе Java? - PullRequest
6 голосов
/ 02 октября 2009

У меня около 200 сотен флажков в графическом интерфейсе Java. Теперь я хочу получить список всех флажков, которые были проверены пользователем.

Я могу сделать это одним из следующих способов:

jCheckBox1.isSelected();

Но я не хочу писать эту строку для 200 флажков. Есть ли способ сделать это через цикл.

все флажки имеют такие названия, как jCheckBox1, jCheckBox2, jCheckBox3, jCheckBox4 ... jCheckBox200

Ответы [ 3 ]

12 голосов
/ 02 октября 2009

Вы действительно должны были поместить их в массив или коллекцию, чтобы вы могли просто зациклить их. например.

List<JCheckBox> allCheckBoxes = new ArrayList<JCheckBox>()
allCheckboxes.add(new JCheckBox());

и т.д.

Если у вас есть все эти флажки, объявленные как члены, то нет никакого оправдания, чтобы просто поместить их в список.

Тем временем вы можете использовать хитрый бросок в цикле for (если все флажки находятся на одной панели)

boolean allSelected = true;
for(Component component : myPanel.getComponents()) {
  if(component instanceof JCheckBox) {
    allSelected &= ((JCheckBox)component).isSelected();
  }
}

Я бы порекомендовал прочитать о массивах и коллекциях Java перед тем, как продолжить

http://java.sun.com/docs/books/tutorial/java/nutsandbolts/arrays.html

http://java.sun.com/docs/books/tutorial/collections/index.html

1 голос
/ 02 октября 2009

Ммм, что мне сказать?

ОК. Вы должны начать с использования массива, чтобы сохранить все имеющиеся у вас флажки, чтобы вы могли проходить через него.

В случае, если это слишком поздно, у вас может быть другой выбор по циклу, хотя все элементы в этом контейнере (работают, только если все флажки находятся в одном контейнере). Что-то вроде 'jPanel1.getComponents()', а затем зацикливать их, чтобы увидеть только флажок.

В любом случае .. Я думаю, вы должны поместить все это в массив и спасти себя от беспорядка переменных.

0 голосов
/ 02 октября 2009

Ну, если у вас есть флажки в массиве ... вы можете сделать это в цикле.

JCheckBox[] myBoxes = new JCheckBox[200];

//Some creation stuff here

for (int i=0; i<myBoxes.length; ++i) {
   if (myBoxes[i].isSelected()) {
       //Do stuff!
   }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...