1

好的,问题来了:每次我单击“确定”时,它都应该返回选定的索引号,对吗?无论我选择什么,下面的代码都只返回第一个索引。我设置了“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);
    }
});
4

2 回答 2

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应该是最终的,这可能没问题,因为您不需要更新该引用。

于 2013-08-05T19:51:58.630 回答
1

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

于 2013-08-05T19:49:14.403 回答