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
并向其中添加组合框。
在您的覆盖操作中,您可以访问它。
尝试使用它,因为您的代码片段不够广泛,无法实际提供正确的代码。但这应该可以回答您的问题
我有一个简短的问题。我不明白...
我有一个 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
并向其中添加组合框。
在您的覆盖操作中,您可以访问它。
尝试使用它,因为您的代码片段不够广泛,无法实际提供正确的代码。但这应该可以回答您的问题