Я очень новичок в Java, и у меня возникают некоторые проблемы, связанные с циклом JCheckBoxes в пользовательском интерфейсе. Идея состоит в том, что у меня есть несколько флажков (не в группе, потому что можно выбрать более одного). Когда я нажимаю кнопку JButton, я хочу создать строку, содержащую текст из каждого выбранного флажка. У меня проблема в том, что наш инструктор сказал нам, что флажки нужно создавать с помощью метода, что означает (см. Код ниже), что для каждого флажка нет отдельного имени экземпляра. Если бы они были, я мог бы сказать что-то вроде
if(checkBox1.isSelected()) {
myString.append(checkBox.getText());
}
Это будет повторяться для checkBox2, checkBox3 и так далее. Но предоставленный нам метод добавления флажков на панель выглядит следующим образом:
public class CheckBoxPanel extends JPanel {
private static final long serialVersionUID = 1L;
public CheckBoxPanel(String title, String... options) {
setBorder(BorderFactory.createTitledBorder(BorderFactory
.createEtchedBorder(), title));
setLayout(new BoxLayout(this, BoxLayout.Y_AXIS));
// make one checkbox for each option
for (String option : options) {
JCheckBox b = new JCheckBox(option);
b.setActionCommand(option);
add(b);
}
}
}
Это называется так:
toppingPanel = new CheckBoxPanel("Each Topping $1.50", "Tomato", "Green Pepper",
"Black Olives", "Mushrooms", "Extra Cheese",
"Pepperoni", "Sausage");
Итак, теперь у меня есть панель с рамкой с заголовком «Каждый топпинг по $ 1,50» и 7 видимыми флажками. Что мне нужно сделать, это получить список всех выбранных начинок. Мы не должны использовать ActionListener для каждого флажка, а получим список при нажатии кнопки. Я чувствую себя по-настоящему невежественным, но я просто не могу понять, как получить свойство isSelected для флажков, когда отдельные флажки не имеют имен экземпляров.
В идеале я хотел бы как-то добавить все флажки в массив и просмотреть массив в обработчике действий кнопки, чтобы определить, какие из них проверены, но если мне придется проверять каждый из них по отдельности, я это сделаю. Я просто не могу понять, как ссылаться на отдельные флажки, когда они были созданы динамически.