我必须在java中创建一个硬件商店,客户可以从带有复选框的列表和带有微调器的数量中选择他想要订购的商品。我可以通过for循环生成项目列表(项目来自Query到数据库并返回到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件以上物品的漂亮的盒子布局。 但现在是棘手的部分:如何知道选择了哪个复选框?所以我可以按一下按钮进行订购。 它只能找到最后生成的检查按钮的值(所以从数据库的最后一项开始)
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!");
}
如果我可以使用变量名称制作更多复选框,问题将会解决,例如来自FOR循环的计数器'i'。然后我可以检查checkbox1,checkbox2,checkbox3。 ..被选中了? 但是如何?
提前致谢, Diederik Verstraete 学生商务工程师根特
答案 0 :(得分:0)
您可以创建多个复选框并将其保存,以便以后在数组或集合中使用。如果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());
}