Еще один глупый вопрос о Java: как передать событие
Но создан он по модели таблицы - Имеется в виду некоторая реализация TableModel?
модель описана в отдельном паке - В отдельном пакете?
т.к. в JTable метод который надо вызвать не определен - Естественно. В JTable определены методы для управления видом таблицы, а не её содержимым, для управления используется TableModel
и передать экземпляр таблицы-модели обработчику тоже нельзя, т.к. экземпляра этого класса как бы и нет - что значит нет? Тогда таблица работать не будет. Может быть ситуация, когда в Вашем коде нет никаких ссылок на эту модель. В этом случае можно либо завести ссылки на эту модель, либо использовать код вида
MyMegaTableModel mmtm = (MyMegaTableModel) myTable.getTableModel;непосредственно из обработчика события на форме.
mmtm.addSomeBredInOneLine;
Другой вариант - создать обработчик события в самой таблице-модели - Подразумевается реализовать интерфейс ActionListener?
но как ей передать событие от кнопки? - ну либо в обработчике событий вызвать mmtm.actionPerformed(e);, либо просто добавить этот обработчик в качестве обработки используя метод JButton.addActionListener; (что-то вроде strangeButton.addActionListener(mmtm в этом случае обработчик будет вызываться автоматически при нажатии кнопки.
(Тем более, что обработчика для такого события по-идее нет) - Где нет? Почему нет? А если написать?
Что остается? Написать свой интерфейс и создать свое событие? - Зачем? Хотя можно и так. Но правильным решением будет отложить визуальные редакторы интерфейса и научиться полностью создавать интерфейсы с использованием текствого редактора. Это совсем не сложно, а после того, как научился, визуальными пользоваться и не хочется. Creating a GUI with JFC/Swing, там вполне нормально написано.
Да через ActionListener надо, т.е. я так сделать пробовал, но забыл соответствующий интерфейс указать.
Оставить комментарий
sollariss
Ситуация. Имеется объект, скажем JTable. Но создан он по модели таблицы, модель описана в отдельном паке, в модели описан метод, скажем, добавление новой строки в JTable. Проблема заключается в том, что я не могу вызвать этот метод обработчиком нажатия кнопки, т.к. в JTable метод который надо вызвать не определен, и передать экземпляр таблицы-модели обработчику тоже нельзя, т.к. экземпляра этого класса как бы и нет. Другой вариант - создать обработчик события в самой таблице-модели, но как ей передать событие от кнопки? (Тем более, что обработчика для такого события по-идее нет) .Что остается? Написать свой интерфейс и создать свое событие?