Я только начинал получать над горбом свинг в Jython против качания в Java непосредственно.. и мне интересно, может ли кто-нибудь помочь мне с добавлением action-listeners в JTable в Jython.
Я знаю с помощью кнопки, вы можете просто сделать:
button = Jbutton( " Press me! ", actionPerformed = my.function )
и я знаю, что есть разные события, связанные с JTable.. например, когда что-то выбирается, когда фокус изменяется в таблице, когда сама таблица становится фокусом...
Моя проблема заключается в том, что я не знаю, как реализовать их в синтаксисе создания таблицы. Я создаю таблицу со следующим:
data = DefaultTableModel( items, columnNames )
mytable = JTable( data )
мое основное предположение было бы в том, что мне нужно что-то вроде...
mytable = JTable ( data, isFocused = my.other.function )
но я не знаю точного синтаксиса, и javadocs для JTable достаточно сложны (с аналогичными миллионами других интерфейсов/классов, которые он реализует), не говоря уже о том, чтобы попытаться расшифровать их в контексте jython.
Бонусные очки:
Помимо этого конкретного примера.. есть ли действительно большие ресурсы для синтаксиса Swing in Jython? Я нашел кое-что, но подавляющее большинство, по-видимому, было только малонаселенным, а затем оставлено. (с точки зрения документации)
Список всех возможных действий можно найти на этой странице руководства Java Swing. На этой странице перечислены все методы слушателя в третьем столбце. Не все из них будут применяться к каждому объекту Swing, но если это применимо, вы можете присоединить слушателя так же, как примеры JButton
.
Вы определенно, казалось, искали способ заметить, что фокус был получен за столом. Это событие focusGained
и описано в документации FocusListener
которая находится прямо у первой страницы, о которой я упоминал.
Вот ваш пример, модифицированный для работы:
data = DefaultTableModel(items, columnNames)
mytable = JTable(data, focusGained=my.other.function)
Боюсь, я не нашел хороших описаний работы Jython Swing. Лучше всего, наверное, адаптировать примеры из учебника Swing. Я всегда находил документацию Sun превосходной. (Я знаю, это Oracle теперь...)
Дайте мне знать, если что-то неясно.