JComboBox 获取项目

JComboBox get item

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

我有一个 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");

在这个框架上,我有一个按钮可以打开另一个 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 值传递给另一个class 的方法。我知道如何在方法本身(使用 getselecteditem)中获取组合框的项目值但是我如何在 ActionPerformed 方法中执行此操作,因为我无法访问 ActionPerformed 方法中的组合框....我创建了另一个 ActionListener( comboBox_Listener) 但我还没有将任何代码放入其中...

有什么想法吗?非常感谢

我遇到了几个问题:

您的主要问题:

But how can I do that in the ActionPerformed Method as I can't access the combobox in the ActionPerformed method

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

其他问题:

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

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

private class main_menuhandler implements ActionListener {

    private JComboBox<String> Team_ComboBox;

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

现在您可以通过构造函数创建 class main_menuhandler 并向其中添加组合框。 在您的覆盖操作中,您可以访问它。

尝试使用它,因为您的代码片段不够广泛,无法实际提供正确的代码。但这应该可以回答您的问题