Наши проекты:
Журнал · Discuz!ML · Wiki · DRKB · Помощь проекту |
||
ПРАВИЛА | FAQ | Помощь | Поиск | Участники | Календарь | Избранное | RSS |
[3.145.201.129] |
|
Страницы: (2) [1] 2 все ( Перейти к последнему сообщению ) |
Сообщ.
#1
,
|
|
|
Как сделать row в JTable унаследованном от DefaultTableModel не editable? Как сделать так чтоб для одного(первый) column'а нельзя было-бы изменить width, и в него добавить иконку?
|
Сообщ.
#2
,
|
|
|
Цитата Stvol-88 @ Как сделать row в JTable унаследованном от DefaultTableModel не editable? Переопределить метод isCellEditable() модели и возвращать false для колонок и/или строк, которые нельзя редактировать. Цитата Stvol-88 @ Как сделать так чтоб для одного(первый) column'а нельзя было-бы изменить width Создать свою модель колонок таблицы на базе стандартной и игнорировать изменения размера для нужной колонки. Цитата Stvol-88 @ и в него добавить иконку Установить свой renderer, который будет отображать значок. |
Сообщ.
#3
,
|
|
|
Спасибо.
Еще один вопрос. У меня есть отдельно созданная колонка насл. от TableColumn, на которую установлен DefaultTableCellRenderer. Можно ли в цикле когда добавляются несколько rows, к каждому row установить отдельную иконку через метод DefaultTableCellRenderer.setIcon? |
Сообщ.
#4
,
|
|
|
Цитата Stvol-88 @ Можно ли в цикле когда добавляются несколько rows, к каждому row установить отдельную иконку через метод DefaultTableCellRenderer.setIcon? Внутри рендерера вы можете устанавливать слюбой значок для каждой строки. Но путём кофигурирования это сделать нельзя. |
Сообщ.
#5
,
|
|
|
А как установить отдельный значок к каждому роу? У меня вышло тока чтоб один и тот же icon стоял на всех строках. Можете объяснить как это сделать (если так ваще можно)?
|
Сообщ.
#6
,
|
|
|
Цитата Stvol-88 @ У меня вышло тока чтоб один и тот же icon стоял на всех строках. Можете объяснить как это сделать (если так ваще можно)? В теле метода TableCellRenderer.getTableCellRendererComponent() вы можете установить каждой строке свой значок. Вам нужно только определить по номеру строки нужный значок. |
Сообщ.
#7
,
|
|
|
Это надо переопределить этот метод?
|
Сообщ.
#8
,
|
|
|
getTableCellRendererComponent(JTable table, Object value,
boolean isSelected, boolean hasFocus, int row, int column); ну ти ж можеш задавать в етат метод не просто String или int, но и разные обэкты...а уже из них доставать иконку какую хочешь, или з иного места как выше уже сказано по номерку строчке Кстати Object value ето то самое што ти достаеш з модели таблицы на getValueAt() |
Сообщ.
#9
,
|
|
|
Вот как я сделал:
class MyRenderer extends DefaultTableCellRenderer{ int integer; MyRenderer(int i){ this.integer=i; } public Component getTableCellRendererComponent(JTable table, Object value, boolean isSelected, boolean hasFocus, int row, int column) { String str = value.toString(); JLabel cmp = new JLabel(""); cmp.setIcon(Root.fsv.getSystemIcon(MyTable.files[integer])); return cmp; } } И вот что вышло: Попинайте, как мну сделать? Прикреплённая картинка
|
Сообщ.
#10
,
|
|
|
Один и тот же рендерер используется для всех строк, а вы устанавливаете ваш индекс (integer) в конструкторе.
|
Сообщ.
#11
,
|
|
|
Так если для всех строк используется один и тот же рендерер то на разные строчки нельзя поставит разные иконки? Может быть только одна для всей колонки?
|
Сообщ.
#12
,
|
|
|
Цитата Stvol-88 @ Так если для всех строк используется один и тот же рендерер то на разные строчки нельзя поставит разные иконки? Можно, но значок, необходимый для данной строки вы должны определять непосредственно в методе TableCellRenderer.getTableCellRendererComponent(). А в вашем примере значок определяется при конструкции рендерера. |
Сообщ.
#13
,
|
|
|
А как сделать так как вы сказали?
|
Сообщ.
#14
,
|
|
|
Цитата Stvol-88 @ А как сделать так как вы сказали? Просто определять по номеру строки нужный значок. Или по содержимому. У вас же есть все необходимые данные в параметрах getTableCellRendererComponent() |
Сообщ.
#15
,
|
|
|
Root.fsv.getSystemIcon(MyTable.files[integer])
Что ето за Root ??, дополнительные библиотеки??? FileSystemView.getFileSystemView().getSystemIcon(MyTable.files[integer]); можна еще так иконки доставать А лутше всего будет если модель таблицы буде возвращать не текст или число, а File, и уже TableCellRenderer будет определять как ево рисовать в зависимости от номера строки и колонки. |