JComboBox获取项目

时间:2016-02-20 13:06:50

标签: java swing actionlistener jcombobox

我有一个简单的问题。我不明白......

我有一个JFrame,我添加了一个JComboBox:

            JComboBox<String> Team_ComboBox = new JComboBox<>();
        Team_ComboBox_Handler ComboBox_Listener = new Team_ComboBox_Handler();
        Team_ComboBox.addActionListener(ComboBox_Listener);
        Team_ComboBox.addItem("Test 1");
        Team_ComboBox.addItem("Test 2");

在这个Frame上,我有一个按钮,可以打开另一个JFrame。

            Play = new JButton();
        Play.setText("Play");
        Play.setPreferredSize(dimension);
        Play.addActionListener(menuhandler);
        private class main_menuhandler implements ActionListener {

        @Override
        public void actionPerformed(ActionEvent e) {
            if(e.getSource()==Play){
                teams Team = new teams();
                Team.teams();

                disposeMainMenue();
            }
            if(e.getSource()==Close) {
                System.exit(DO_NOTHING_ON_CLOSE);
            }
        }
    }

无论如何,我想将Combobox的Selected值传递给另一个类的方法。我知道如何在方法本身中获取组合框的itemvalue(使用getselecteditem)但是我怎么能在ActionPerformed方法中这样做,因为我无法访问ActionPerformed方法中的组合框....我创建了另一个ActionListener( comboBox_Listener)但我还没有把任何代码放进去......

有什么想法吗?非常感谢提前

2 个答案:

答案 0 :(得分:3)

在我看来有几个问题:

您的主要问题:

  

但是我怎么能在ActionPerformed方法中做到这一点,因为我无法访问ActionPerformed方法中的组合框

您可能最好的解决方案是更改代码和变量声明位置,以便可以从actionPerformed方法访问JComboBox。如果要在方法或构造函数中声明组合框,请更改它以使其成为类的正确实例字段。

其他问题:

  • 您不应该创建多个JFrame。如果你需要一个从属窗口,那么一个应该是一个JDialog。如果没有,请考虑使用CardLayout交换视图。
  • 学习并遵循Java命名历史记录,以便其他人可以更好地理解您的代码。类名以大写字母开头,方法和变量名不是例如。
  • 我不确定你为什么要这样做:System.exit(DO_NOTHING_ON_CLOSE);。为什么将该常量传递给exit方法?

答案 1 :(得分:2)

为您的动作侦听器类使用构造函数:

private class main_menuhandler implements ActionListener {

    private JComboBox<String> Team_ComboBox;

    public main_menuhandler(JComboBox<String> Team_ComboBox){
        this.Team_ComboBox = Team_ComboBox;
    }
}

现在您可以通过构造函数创建类main_menuhandler并将组合框添加到其中。 在您的Overriden操作中,您可以访问它。

尝试使用此功能,因为您的代码段不够广泛,无法提供正确的代码。但这应该回答你的问题