【发布时间】:2010-05-22 21:56:54
【问题描述】:
我对 Java 非常陌生,并且在 UI 上通过 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");
所以我现在有一个面板,其中包含标题为“Each Topping $1.50”的边框和 7 个可见复选框。我需要做的是获取所有选定浇头的列表。我们不应该为每个复选框使用 ActionListener,而是在单击按钮时获取列表。我在这里真的很无能为力,但是当各个复选框没有实例名称时,我只是不知道如何获取复选框的 isSelected 属性。
理想情况下,我想以某种方式将所有复选框添加到一个数组中,并在按钮的动作侦听器中循环遍历数组以确定哪些复选框被选中,但如果我必须单独检查每个复选框,我会的。我只是不知道如何在动态创建单个复选框时引用它们。
【问题讨论】:
-
@ALL 响应者 - 我只能选择一个答案来标记为已接受,但他们都很有帮助。谢谢!