Как получить доступ к элементам в недоступном для редактирования JComboBox, чтобы метод мог быть запущен при выборе? - PullRequest
1 голос
/ 28 мая 2011

Я немного знаю Python, но, к сожалению, нет Java.Я пытаюсь заставить работать минимальный пример Jython, где метод выполняется каждый раз, когда выбирается элемент в моем JComboBox.Instinct говорит мне, что я должен установить actionPerformed = object для каждого элемента, где object - это имя метода, который я хочу запустить.Я нашел в Интернете пример для JMenuItems и заставил его работать:

menubar = swing.JMenuBar()
optionMenu = swing.JMenu('Option')
optionsList = ['First', 'Second', 'Third']
for option in optionsList:
    choice = swing.JMenuItem(option)
    choice.actionPerformed = self.doUponSelection
    optionMenu.add(choice)
menuBar.add(optionMenu)

Когда я попробовал нечто подобное с swing.JComboBoxItem, он сказал, что такого атрибута не существует.Используя dir(), я нашел атрибуты javax.swing JCheckBoxMenuItem, JMenuItem и JRadioButtonMenuItem.Кто-нибудь знает, как я могу получить доступ к компонентам JList или JComboBox?

Примечание: у меня есть доступ к Jython 2.5.0

Редактировать: я видел документацию по Java (не то, что японимать код), который описывает явное добавление actionListener, но не думал, что это должно быть сделано в Jython.Я знаю, что Jython JButtons имеет атрибут actionPerformed, который, по-видимому, реализует actionListener и выполняет действия (объединяя шаги Java).Если сам JComboBox будет запускать событие, я еще больше запутался, потому что я попытался использовать myJComboBox.actionPerformed = self.doUponSelection, и он дал мне TypeError, говоря, что это атрибут только для чтения.У меня отлично работает с myJButton.actionPerformed = self.doUponSelection.

1 Ответ

0 голосов
/ 28 мая 2011

Вы должны добавить ActionListener к самому JComboBox.Когда выбор сделан, событие действия инициируется.В коде слушателя просто спросите у JComboBox выбранного элемента, чтобы узнать, какой элемент является вновь выбранным.

Чтение http://download.oracle.com/javase/tutorial/uiswing/components/combobox.html#listeners

...