![]() |
|
Модераторы: LSD, AntonSaburov |
![]()
|
|
| Dims |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1016 Регистрация: 21.11.2006 Репутация: 1 Всего: 11 |
Допустим, я хочу написать компонент, который во всём подобен JTable, только в нём отсутствуют некоторые функции. В частности, нельзя изменять модель.
Логично было бы написать класс, который бы содержал JTable в качестве члена и передавал этому члену все свои допустимые методы и не передавал недоспустимые. Как это сделать проще всего? |
|||
|
||||
| v2v |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1620 Регистрация: 20.9.2006 Где: Киев Репутация: нет Всего: 56 |
Тебе надо реализовать свою модель для JTable.
унаследуй DefaultTableModel и в нём перегрузи метод: setValueAt(Object aValue, int row, int column) или другие, которые тебе надо. А при создании Jtable в конструкторе укажи эту модель. Это сообщение отредактировал(а) v2v - 11.4.2008, 21:42 |
|||
|
||||
| w1nd |
|
|||
![]() Вертилятор ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1077 Регистрация: 22.3.2006 Где: Москва Репутация: 23 Всего: 54 |
Нелогично. Из ваших слов следует, что вы хотите прозрачную подмену, а значит нужно наследоваться от JTable. -------------------- ![]() ![]() |
|||
|
||||
| Dims |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1016 Регистрация: 21.11.2006 Репутация: 1 Всего: 11 |
А как при наследовании запретить менять модель?
|
|||
|
||||
| Kangaroo |
|
|||
|
AA - Aussie Animal ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 2042 Регистрация: 7.10.2006 Где: US Репутация: 15 Всего: 104 |
Логично будет убрать конструкторы с моделью и метод setTableModel() -------------------- Lost.... |
|||
|
||||
| Dims |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1016 Регистрация: 21.11.2006 Репутация: 1 Всего: 11 |
А как убрать метод?
|
|||
|
||||
| Kangaroo |
|
|||
|
AA - Aussie Animal ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 2042 Регистрация: 7.10.2006 Где: US Репутация: 15 Всего: 104 |
-------------------- Lost.... |
|||
|
||||
| Dims |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1016 Регистрация: 21.11.2006 Репутация: 1 Всего: 11 |
Но он же всё равно будет присутствовать и его можно будет вызвать, просто он ничего не будет делать. Лучше уж тогда исключение выбросить UnsupportedOperationException.
Ну а всё-таки. Ведь по сути обёртка не отличается от наследования. Допустим, я всё-таки хочу сделать обёртку. Как мне поступить? |
|||
|
||||
| math64 |
|
|||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2505 Регистрация: 12.4.2007 Репутация: 5 Всего: 72 |
Унаследуй от JScrollPane и добавь в неё методы для работы с таблицей. Но тогда тебе нужно будет перегружать методы заменяющие содержимое JScrollPane и дающие к нему доступ ([get/set]ViewPort[View],[get/set]Header[View] и т.д.). Если тебе это тоже не нравится, придётся перегружать панель, на которой лежит JScrolPane и т.д. до JFrame.
А можно просто сохранять только указатели на модели. |
|||
|
||||
![]()
|
| Правила форума "Java" | |
|
|
Если Вам помогли, и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, LSD, AntonSaburov, powerOn, jk1. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | Java: GUI и Java FX приложения | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |