2013-08-05 40 views
1

好的,這裏是問題所在:每次我點擊確定後,它都會返回選定的索引號,對吧?不管我選擇什麼,下面的代碼都只返回第一個索引。我設置了「cMenu.selected(1)」,無論我選擇什麼,它都會返回索引1。Java Choice所選索引不能正確返回

使用的JPanel,一個JButton,選擇

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); 
    } 
}); 
+0

什麼是cClass? – Filip

回答

1

單擊「確定」按鈕後,您需要重新計算menuSelection的值;

final int menuSelection = cMenu.getSelectedIndex(); 

如果你這樣做,你應該能夠看到你的價值:

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

這將意味着cMenu應該你的Choice化期間,如下圖所示,一旦將它設置最後,這可能是好的,因爲你不需要更新那個引用。

+0

WHOOPS!在發佈之前,我不得不編輯一些代碼。在我發佈之前,我忘了將cClass更改爲cMenu!我現在正在改變它 – SilverWolfe

+0

@SilverWolfe沒問題,答案已更新。 –

+0

關於同一主題,我如何獲得選擇以動態更改內容(JLabel)?如果item1被選中,則列表將顯示(在gui中)列表:麪包,牛奶等;或者如果選擇了item2列表:egg,butter等e – SilverWolfe

1

「確定它應該返回選定索引號」。不,它不應該。你調用getSelectedIndex()一次。所以你的int永遠具有相同的值。您必須在您的偵聽器中調用getSelectedIndex()以獲取新值。