好的,这就是问题所在:每次我单击“确定”时,都应该返回所选的索引号,对吗?不管我选择什么,下面的代码仅返回第一个索引。我设置了“ 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
应该是最终的,这可能没问题,因为您不需要更新该引用。