| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > Java: GUI и Java FX приложения > Как повернуть JTable на 90 градусов в лево |
| Автор: diablero 3.12.2006, 00:16 |
| Для того чтобы результат запроса к базе данных был более информативным и читаемым, мне необходимо повернуть таблицу. Таблица включает в себя строки, чекбоксы, картинки, даты ... Просто совершить манипуляцию с данными т.е. перевернуть не таблицу, а данные у меня не получилось. Подскажите пути решения проблемы. |
| Автор: w1nd 3.12.2006, 02:00 |
| А почему не получилось? |
| Автор: diablero 5.12.2006, 19:02 |
| Изначально на соответсвующие столбцы у меня были назначенны собственные CellRenderer'ы, а при перевороте я не знаю чтто делать. Назначать их на соответсвующие ячейки таблицы? Только я не знаю как... |
| Автор: diablero 5.12.2006, 19:31 |
| >а может таблицу не поворачивать, а повенрнуть рендерер? Поясните? |
| Автор: powerOn 5.12.2006, 20:01 |
| Вот есть http://jroller.com/page/henribenoit?entry=vertical_labels вывода вертикального текста в JLabel. Можно попробовать его в качестве рендерера для ячейки таблицы. Теоретически, должно получиться. Тогда и таблицу поворачивать не придется... |
| Автор: diablero 5.12.2006, 20:24 |
| Нееет, суть не в этом. Мне не ячейки надо повернуть, а всю таблицу, т.е. чтобы прокручивать столбцы надо было не в право, а в низ Исходная: 1 | 2 | 3 | текст | текст |текст | Что нужно получить: _________| 1 | текст | _________| 2 | текст | _________| 3 | текст | |
| Автор: powerOn 5.12.2006, 20:39 |
| Т.е. у Вас просто направление вывода данных меняется ... как бы транспонируются... Тогда лучше модель таблицы соответствующим образом переписать... Что бы первая строка была первым столбцом, вторая вторым и тд... |
| Автор: diablero 5.12.2006, 21:32 |
| Тогда как соответствующий рендерер назначить соответсвующей строке, или ячейки? |
| Автор: LSD 5.12.2006, 21:38 | ||
Назначай рендерер на класс:
|
| Автор: diablero 5.12.2006, 23:48 | ||||||||||
Для транформации имею две модели таблицы. Исходная:
И транспонированная:
Для отображения использую следующий рендерер:
Редактор
|
| Автор: w1nd 6.12.2006, 00:27 |
| В вашей исходной модели переопределен метод getColumnClass(), а в транспонированной - нет. Реализация этого метода в AbstractTableModel возвращает Object.class. А еще замечу, что менять свойства таблицы из рендерера не стоит, т. к. каждое такое изменение вызывает очередную перерисовку. |
| Автор: diablero 6.12.2006, 14:25 |
| Чего -то с реализацией метода getColumnClass() проблема, в транспонированной таблице, не знаю как ему строки подпихивать... >А еще замечу, что менять свойства таблицы из рендерера не стоит, т. к. каждое такое изменение вызывает очередную перерисовку. А я то думал, что она перерисовываеться |
| Автор: LSD 7.12.2006, 13:06 | ||
Тут уже все равно, что ему выдавать. Все равно класс задается для колонки в целом, а не для отдельных ее элементов. Так что пусть возвращает Object.class. Надо написать такой рендерер, который бы определял реальный тип объекта (instanceof), и в зависимости от этого отображал его. |
| Автор: diablero 7.12.2006, 16:23 |
| to w1nd >А еще замечу, что менять свойства таблицы из рендерера не стоит, т. к. каждое такое изменение вызывает очередную перерисовку. А где тогда выставлять размер ячеек? Данные то все разные (размер картинок, длина текста) |
| Автор: diablero 8.12.2006, 23:37 |
| Как обрабатывать события редактора. Что пользователь закончил редактировать? Что переключился на другую ячейку? |
| Автор: LSD 9.12.2006, 02:21 |
| Модератор: Пожалуйста, один топик - один вопрос. |