我有一个简单的问题。我不明白......
我有一个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)但我还没有把任何代码放进去......
有什么想法吗?非常感谢提前
答案 0 :(得分:3)
在我看来有几个问题:
您的主要问题:
但是我怎么能在ActionPerformed方法中做到这一点,因为我无法访问ActionPerformed方法中的组合框
您可能最好的解决方案是更改代码和变量声明位置,以便可以从actionPerformed方法访问JComboBox。如果要在方法或构造函数中声明组合框,请更改它以使其成为类的正确实例字段。
其他问题:
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操作中,您可以访问它。
尝试使用此功能,因为您的代码段不够广泛,无法提供正确的代码。但这应该回答你的问题