如何听取按钮动作添加组合框并再次听取动作Java

时间:2016-11-29 13:22:21

标签: java combobox

我的问题是:我想要一个带有组合框和ok按钮的框架。我想从该列表中选择一个项目,然后单击确定,并根据所选项目添加一个包含新项目的新组合框。

String[] locals = {"a bunch of strings"};

JComboBox<String> localsList = new JComboBox<String>(locals);
        localsList.setSelectedIndex(0);

        JButton okButton = new JButton("OK");
        p.add(localsList);
        p.add(okButton);

        okButton.addActionListener( new ActionListener()
        {

            public void actionPerformed(ActionEvent e) {
                String value = localsList.getSelectedItem().toString();

                switch(value){

                    case("a bunch of strings"):
                        JComboBox<String> concelhosList = new JComboBox<String>(concelhosL);
                        concelhosList.setSelectedIndex(0);
                        p.add(concelhosList);

                }
            }
        });


        okButton.addActionListener( new ActionListener()
            {

                public void actionPerformed(ActionEvent e) {
                    String value = concelhosList.getSelectedItem().toString();

                }
        });

问题是concelhosList变量保留在第一个动作列表器中,因此第二个动作列表器不能识别它,而eclipse说我需要创建变量。

我该如何解决这个问题,还是有另一种方法可以做到这一点?

2 个答案:

答案 0 :(得分:0)

使其成为一个成员变量,然后在actionPerformed中初始化。你也不需要2个动作监听器。只需使用if语句来检查concelhosList是否为空。如果是的话你会忽略它而去另一个。

代码可能如下所示:

okButton.addActionListener( new ActionListener()
    {

        public void actionPerformed(ActionEvent e) {
            if(concelhosList==null){
            String value = localsList.getSelectedItem().toString();

            switch(value){

                case("a bunch of strings"):
                    concelhosList = new JComboBox<String>(concelhosL);
                    concelhosList.setSelectedIndex(0);
                    p.add(concelhosList);

            }
            }else{
                String value = concelhosList.getSelectedItem().toString();
            }
        }
    });

答案 1 :(得分:0)

如果您需要在其他逻辑中编写JComboBox,只需将其提取到更高的范围。

在你的例子中,我建议将它放在第一行旁边,如下所示:

private String[] locals = {"a bunch of strings"};
private JComboBox<String> concelhosList;