2013-08-05 3 views
1

Итак, вот в чем проблема: каждый раз, когда я нажимаю OK, он должен возвращать выбранный номер индекса, правильно? Код ниже возвращает ТОЛЬКО первый индекс независимо от того, что я выбираю. Я установил «cMenu.selected (1)», и он снова возвращает индекс 1, независимо от того, что я выбираю.Выбор Java Выбранный индекс не возвращается должным образом

Использование 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; вы устанавливаете его однажды во время инстанциации Choice, как показано ниже:

final int menuSelection = cMenu.getSelectedIndex(); 

Если вы делаете что-то вроде этого, вы должны быть в состоянии видеть ваше значение:

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

Это будет означать cMenu должен быть окончательным, что, вероятно, хорошо, потому что вам не нужно когда-либо обновлять эту ссылку.

+0

WHOOPS! Мне пришлось немного изменить код, прежде чем публиковать его. я забыл изменить cClass на cMenu, прежде чем я разместил его здесь! Я меняю его сейчас – SilverWolfe

+0

@SilverWolfe Нет проблем, ответ обновлен. –

+0

На эту же тему, как я могу получить выбор для динамического изменения контента (JLabel)? скажем, если выбрано item1, список покажет (в списке gui): хлеб, молоко и т. д .; или если выбран пункт item2: яйца, масло, ect – SilverWolfe

1

"OK он должен вернуть номер выбранного индекса". Нет, не должно. вы вызываете getSelectedIndex() один раз. Таким образом, ваш int имеет такое же значение навсегда. Вы должны вызвать getSelectedIndex() в своем слушателе, чтобы получить новое значение.

Смежные вопросы