我必须在java中创建一个五金店,其中客户可以从带有复选框的列表中选择他想要订购的项目,并带有旋转键的数量。我可以通过for循环生成项目列表(项目来自对数据库的查询,并在arrayList中返回)
这是for循环:
ArrayList stringList = new ArrayList();
stringList = cond.getOnderdelen(); // he gets the items from the database (method in other class)
itemArea.add(new JLabel("Naam en prijs")); // itemArea is my JPanel
for (int i = 0; i < stringList.size(); i++) {
System.out.println(stringList.get(i));
String item = (String) stringList.get(i);
String checknummer = Integer.toString(i);
check = new JCheckBox(checknummer);
check.setText(item);
JSpinner spin = new JSpinner();
itemArea.setLayout(new BoxLayout(itemArea, BoxLayout.Y_AXIS));
itemArea.add(check); // I add the components to the JPanel..
itemArea.add(spin);
我得到一个漂亮的10+项目的盒子布局。但现在棘手的部分:如何知道哪个复选框被选中??所以我可以创建一个make ORDER按钮。它只能找到最后生成的复选按钮的值(所以从数据库的最后一项)
if(e.getSource() == orderBtn)
{
System.out.println("Button has been pressed");
state = check.isSelected(); // state is a boolean variable.
if(state == true)
{
System.out.println("True: checkbox is selected!");
}
问题将得到解决,如果我可以使更多的复选框与变量名称,如计数器' I '从FOR循环。然后我可以检查是否checkbox1, checkbox2, checkbox3…被选中?但如何?
提前感谢,Diederik•韦斯特拉特学生商务工程师根特
您可以创建多个复选框并将其保存以供稍后在数组或集合中使用。如果你的ActionListener在上面的类之外,你将不得不以某种方式将复选框集合传递给ActionListener。如果你使用一个匿名的,你可以直接引用你的复选框。
public class MyWindow extends JFrame()
{
private List<JCheckBox> checkboxes = new LinkedList<JCheckBox>();
public MyWindow()
{
for (int i = 0; i < numOrders; ++i)
checkboxes.add(new JCheckBox(String.valueOf(i));
}
// Not sure where you're action listener is, but here's the callback
public void actionPerformed(ActionEvent event)
{
for (JCheckBox checkbox : checkboxes)
System.out.println(checkbox.isSelected());
}