如何在swing中创建多个字段并在for循环中使用该值

时间:2017-11-30 21:29:50

标签: java swing

我想创建一个用户界面,用户可以在其中选择他想要的每个披萨的特征。 我希望abl使用所述用户输入的值。

所以这是我的代码:

                JPanel panelComm2 = new JPanel();
                String[] crust = Crust.names();
                String[] size  = Size.names();
                String[] drink = Drink.names();


                Box verticalBox = Box.createVerticalBox();
                for(int i=0;i<nbPizza;i++){
                    Box horizontalBox =  Box.createHorizontalBox();
                    JLabel crustJLabel = new JLabel("Crust Pizza "+ (i+1)+": ");
                    horizontalBox.add(crustJLabel);
                    JComboBox comboCrust = new JComboBox(crust);
                    horizontalBox.add(comboCrust);

                    JLabel sizeJLabel = new JLabel("Size Pizza "+ (i+1)+": ");
                    horizontalBox.add(sizeJLabel);
                    JComboBox comboSize = new JComboBox(size);
                    horizontalBox.add(comboSize);
                    verticalBox.add(horizontalBox);
                }
                for (int j=0;j<nbDrink;j++){
                    Box horizontalBox =  Box.createHorizontalBox();
                    JLabel drinkJLabel = new JLabel("Drink "+ (j+1) +": ");
                    horizontalBox.add(drinkJLabel);
                    JComboBox comboChooseDrink = new JComboBox(drink);
                    horizontalBox.add(comboChooseDrink);
                    verticalBox.add(horizontalBox);
                }

                panelComm2.add(verticalBox);

                int p = JOptionPane.showOptionDialog(null, panelComm2, "Select option",
                        JOptionPane.YES_NO_OPTION,
                        JOptionPane.QUESTION_MESSAGE,
                        null, options2, options2[0]);
                if (p == JOptionPane.YES_OPTION) {
                    // Here I want to store the value enter by the user in the comboBox
                    // Without a for, I would do this
                    //
                    // String crust1 = comboCrust().getSelectedItem().toString();
                    //
                    //But comboCrust don't exist anymore cause it exist only in the for
                    System.out.println("To do");
                }

你可以看到我在一些for循环中生成我的接口,这些循环的大小取决于某个变量(由用户定义)

创建一个JComboBox用于选择&#39; Crust&#39;&#39;尺寸&#39;或者&#39;饮用&#39;。 (这三个都是枚举)

界面是在&#34; Box&#34;的帮助下组织的。水平和垂直。我把它放在我的主面板&#34; panelComm2&#34;也用于在最后制作JoptionPane。

这就是它的样子:

User interface

然而,通过我构建界面的方式,我无法获得用户选择的信息。

我正在寻找一种为界面的每个字段添加变量的方法,以便在用户点击“确定”时使用它们。

1 个答案:

答案 0 :(得分:0)

我放弃了为每个字段创建变量的想法,并使用JcomboBox数组定义之前的&#39; for&#39;循环。

JComboBox[] arrayComboCrust = new JComboBox[nbPizza];
JComboBox[] arrayComboSize = new JComboBox[nbPizza];
JComboBox[] arrayComboDrink = new JComboBox[nbDrink];

然后在循环中我定义数组的值:

arrayComboCrust[i]=comboCrust;

我为&#39;设立了一个新的&#39;循环到我的JOptionPane来读取我想要的值

感谢MadProgrammer