好的,这就是问题所在:每次我单击“确定”时,都应该返回所选的索引号,对吗?不管我选择什么,下面的代码仅返回第一个索引。我设置了“ 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);
    }
});

最佳答案

单击“确定”按钮时,您需要重新计算menuSelection的值;您可以在Choice的实例化过程中对其进行一次设置,如下所示:

final int menuSelection = cMenu.getSelectedIndex();


如果您这样做,则应该能够看到您的价值:

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


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

09-25 20:15