Java Choice Selected Index未正确返回

时间:2013-08-05 19:46:37

标签: 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.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);
    }
});

2 个答案:

答案 0 :(得分:1)

“确定它应该返回所选的索引号”。不,它不应该。你正在调用getSelectedIndex()一次。所以你的int永远具有相同的价值。您必须在侦听器中调用getSelectedIndex()以获取新值。

答案 1 :(得分:1)

单击“确定”按钮时,您需要重新计算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应该是最终的,这可能没问题,因为您不需要更新该引用。