Java选项所选索引未正确返回

Java选项所选索引未正确返回,java,swing,jpanel,selection,choice,Java,Swing,Jpanel,Selection,Choice,好的,问题是:每次单击Ok,它都会返回所选的索引号,对吗?下面的代码只返回第一个索引,不管我选择了什么。我设置了“cMenu.selected(1)”,不管我选择了什么,它都会再次返回索引1 使用JPanel、JButton和Choice String[] menu = {"item 1" , "item 2", "item3"}; cMenu = new Choice(); cMenu.setBounds(0, 0, 75, 25); for (int i = 0; i < menu.

好的,问题是:每次单击Ok,它都会返回所选的索引号,对吗?下面的代码只返回第一个索引,不管我选择了什么。我设置了“cMenu.selected(1)”,不管我选择了什么,它都会再次返回索引1

使用JPanel、JButton和Choice

String[] menu = {"item 1" , "item 2", "item3"};

cMenu = new Choice();
cMenu.setBounds(0, 0, 75, 25);
for (int i = 0; i < menu.length; i++)
    cMenu.add(menu[i]);
}
panel.add(cMenu);

final int menuSelection = cMenu.getSelectedIndex();

//Below is, of course, debugging
//Before asking, the button works it does say 0 or Hello World or whatever I want
//when clicked

OK.addActionListener(new ActionListener() {
    public void actionPerformed(ActionEvent e) {
        System.out.println(menuSelection);
    }
});
String[]菜单={“项目1”、“项目2”、“项目3”};
cMenu=新选项();
Cmen.立根(0,0,75,25);
对于(int i=0;i
“好的,它应该返回所选的索引号”。不,不应该。您正在调用getSelectedIndex()一次。所以你的int永远有相同的值。您必须在侦听器中调用getSelectedIndex()以获取新值。

单击“确定”按钮时,您需要重新计算
菜单选择的值;在实例化
选项时设置一次,如下所示:

final int menuSelection = cMenu.getSelectedIndex();
如果您这样做,您应该能够看到您的价值:

OK.addActionListener(new ActionListener() {
    public void actionPerformed(ActionEvent e) {
        int currentSelection = cMenu.getSelectedIndex();
        System.out.println(currentSelection);
    }
});

这意味着
cMenu
应该是最终版本,这可能是可以的,因为您不需要更新该引用。

哎呀!在发布之前,我不得不对代码进行一些编辑。在我把它发布到这里之前,我忘了将cClass更改为cMenu!我现在正在对同一主题进行更改,如何获得动态更改内容的选择(JLabel)?如果选择了item1,列表将显示(在gui中)列表:面包、牛奶等;或者如果选择了第2项列表:鸡蛋、黄油、,ect@SilverWolfe在该
actionPerformed
方法中,您可以运行任何需要的代码。如果(currentSelection==2){//更新Jpanel的组件}
,则可以执行
。不过,这可能更适合另一个问题,因为我不是使用AWT动态创建GUI的最佳资源。谢谢您的输入!这个代码对我有用。对我来说,将所有这些放在一个方法中,然后在actionPerformed中调用它可能更容易