Модераторы: LSD, AntonSaburov
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Как написать обёртку к JTable 
:(
    Опции темы
Dims
Дата 11.4.2008, 21:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1016
Регистрация: 21.11.2006

Репутация: 1
Всего: 11



Допустим, я хочу написать компонент, который во всём подобен JTable, только в нём отсутствуют некоторые функции. В частности, нельзя изменять модель.

Логично было бы написать класс, который бы содержал JTable в качестве члена и передавал этому члену все свои допустимые методы и не передавал недоспустимые. 

Как это сделать проще всего?
PM MAIL   Вверх
v2v
Дата 11.4.2008, 21:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1620
Регистрация: 20.9.2006
Где: Киев

Репутация: нет
Всего: 56



Тебе надо реализовать свою модель для JTable.
унаследуй DefaultTableModel и в нём перегрузи метод: 
setValueAt(Object aValue, int row, int column)
или другие, которые тебе надо.
А при создании Jtable в конструкторе укажи эту модель.

Это сообщение отредактировал(а) v2v - 11.4.2008, 21:42


--------------------
PM   Вверх
w1nd
Дата 13.4.2008, 22:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Вертилятор
***


Профиль
Группа: Завсегдатай
Сообщений: 1077
Регистрация: 22.3.2006
Где: Москва

Репутация: 23
Всего: 54



Цитата(Dims @  11.4.2008,  21:34 Найти цитируемый пост)
Логично было бы написать класс, который бы содержал JTable в качестве члена и передавал этому члену все свои допустимые методы и не передавал недоспустимые.

Нелогично. Из ваших слов следует, что вы хотите прозрачную подмену, а значит нужно наследоваться от JTable.


--------------------
user posted imageuser posted image
PM MAIL ICQ   Вверх
Dims
Дата 14.4.2008, 16:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1016
Регистрация: 21.11.2006

Репутация: 1
Всего: 11



А как при наследовании запретить менять модель?
PM MAIL   Вверх
Kangaroo
Дата 14.4.2008, 16:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


AA - Aussie Animal
****


Профиль
Группа: Участник Клуба
Сообщений: 2042
Регистрация: 7.10.2006
Где: US

Репутация: 15
Всего: 104



Цитата(Dims @  14.4.2008,  16:03 Найти цитируемый пост)
А как при наследовании запретить менять модель? 

Логично будет убрать конструкторы с моделью и метод setTableModel()   smile 


--------------------
Lost....
PM MAIL MSN   Вверх
Dims
Дата 14.4.2008, 16:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1016
Регистрация: 21.11.2006

Репутация: 1
Всего: 11



А как убрать метод?
PM MAIL   Вверх
Kangaroo
Дата 14.4.2008, 16:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


AA - Aussie Animal
****


Профиль
Группа: Участник Клуба
Сообщений: 2042
Регистрация: 7.10.2006
Где: US

Репутация: 15
Всего: 104



Цитата(Dims @  14.4.2008,  16:22 Найти цитируемый пост)
А как убрать метод? 

Сделать его овверайд и оставить пустым.


--------------------
Lost....
PM MAIL MSN   Вверх
Dims
Дата 14.4.2008, 16:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1016
Регистрация: 21.11.2006

Репутация: 1
Всего: 11



Но он же всё равно будет присутствовать и его можно будет вызвать, просто он ничего не будет делать. Лучше уж тогда исключение выбросить UnsupportedOperationException.

Ну а всё-таки. Ведь по сути обёртка не отличается от наследования. Допустим, я всё-таки хочу сделать обёртку. Как мне поступить?
PM MAIL   Вверх
math64
Дата 15.4.2008, 07:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2505
Регистрация: 12.4.2007

Репутация: 5
Всего: 72



Унаследуй от JScrollPane и добавь в неё методы для работы с таблицей. Но тогда тебе нужно будет перегружать методы заменяющие содержимое JScrollPane и дающие к нему доступ ([get/set]ViewPort[View],[get/set]Header[View] и т.д.). Если тебе это тоже не нравится, придётся перегружать панель, на которой лежит JScrolPane и т.д. до JFrame.
А можно просто сохранять только указатели на модели.
PM   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Java"
LSD   AntonSaburov
powerOn   jk1
  • Прежде, чем задать вопрос, прочтите это!
  • Книги по Java собираются здесь.
  • Документация и ресурсы по Java находятся здесь.
  • Используйте теги [code=java][/code] для подсветки кода. Используйтe чекбокс "транслит", если у Вас нет русских шрифтов.
  • Помечайте свой вопрос как решённый, если на него получен ответ. Ссылка "Пометить как решённый" находится над первым постом.
  • Действия модераторов можно обсудить здесь.
  • FAQ раздела лежит здесь.

Если Вам помогли, и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, LSD, AntonSaburov, powerOn, jk1.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Java: GUI и Java FX приложения | Следующая тема »


 




[ Время генерации скрипта: 0.0665 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.