1

OK、ここに問題があります。[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);
    }
});
4

2 に答える 2

1

menuSelection「OK」ボタンがクリックされたときの値を再計算する必要があります。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

「OK、選択したインデックス番号を返す必要があります」。いいえ、そうすべきではありません。getSelectedIndex() を一度呼び出しています。したがって、 int は永遠に同じ値を持ちます。新しい値を取得するには、リスナーで getSelectedIndex() を呼び出す必要があります。

于 2013-08-05T19:49:14.403 に答える