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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> TableModel, JTable изменение видимого содержимого, изменить видимое значение 
V
    Опции темы
soulcub
Дата 22.5.2010, 00:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 130
Регистрация: 2.2.2010
Где: Винница, Украина

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



У меня есть JTable, в котором хранятся некие данные. Как сделать так, чтоб в ячейке отображалось значение, которое я задал, а на самом деле в ячейке значение было другое? Ну, например если у меня в ячейке boolean-овское значение, нужно чтоб при true в ячейке отображалось слово "Выполнено", а при false, "Не выполнено". Спасибо заранее.
--------------------
Так давай же, поспеши!Отыскать СВОЙ куб души!
PM MAIL ICQ   Вверх
pathfinder
Дата 22.5.2010, 09:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 120
Регистрация: 3.3.2010

Репутация: 7
Всего: 10



Можно, через собственный TableCellRenderer

Код

public class CustomBooleanRenderer extends JLabel implements TableCellRenderer {

        private Border emptyBorder = new EmptyBorder(1, 1, 1, 1);

        public CustomBooleanRenderer() {
            setOpaque(true);
        }

        @Override
        public Component getTableCellRendererComponent(
                JTable table,
                Object value,
                boolean isSelected,
                boolean hasFocus,
                int row, int column)
        {
            setText(value == null || !((Boolean) value) ? "Не выполнено" : "Выполнено");
            
            if (isSelected) {
                setForeground(table.getSelectionForeground());
                setBackground(table.getSelectionBackground());
            } else {
                setForeground(table.getForeground());
                setBackground(table.getBackground());
            }

            if (hasFocus) {
                setBorder(UIManager.getBorder("Table.focusCellHighlightBorder"));
            } else {
                setBorder(emptyBorder);
            }

            return this;
        }

    }


цепляем его к конкретной колонке
Код

jTable1.getColumnModel().getColumn(/* ваша колонка */).setCellRenderer(new CustomBooleanRenderer());

PM MAIL   Вверх
aleksandy
Дата 22.5.2010, 13:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 260
Регистрация: 17.12.2006

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



Зачем тут CellRenderer? Достаточно просто переопределить метод getValueAt(int, int) в модели таблицы.
PM   Вверх
dorogoyIV
Дата 22.5.2010, 14:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


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

Репутация: 36
Всего: 46



Цитата(aleksandy @  22.5.2010,  13:53 Найти цитируемый пост)
Зачем тут CellRenderer? Достаточно просто переопределить метод getValueAt(int, int) в модели таблицы.

 smile  не подходит, т.к. 
Цитата(soulcub @  22.5.2010,  00:23 Найти цитируемый пост)
чтоб в ячейке отображалось значение, которое я задал, а на самом деле в ячейке значение было другое

за отображение отвечает рендерер
PM MAIL   Вверх
soulcub
Дата 23.5.2010, 10:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 130
Регистрация: 2.2.2010
Где: Винница, Украина

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



dorogoyIV, супер, всё работает=) Теперь осталось только разобраться, как..) Сейчас ещё хочу сделать чтоб этот boolean был в ComboBox-е и чтоб его можно было менять) Надеюсь сам найду, но если не тяжело, может подскажите как это сделать?) Наверняка не через рендерер? 

Я вот уже даже сделал ComboBox) Осталось вставить его вместо ячейки) 

Всё, ладно) Мне самому интересно разобраться) Спасибо за помощь) Если будут проблемы - создам тогда новую тему=) А эту - закрываю)

Это сообщение отредактировал(а) soulcub - 23.5.2010, 11:14
--------------------
Так давай же, поспеши!Отыскать СВОЙ куб души!
PM MAIL ICQ   Вверх
aleksandy
Дата 24.5.2010, 07:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 260
Регистрация: 17.12.2006

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



Цитата(dorogoyIV @ 22.5.2010,  14:41)
 smile  не подходит, т.к. 
Цитата(soulcub @  22.5.2010,  00:23 Найти цитируемый пост)
чтоб в ячейке отображалось значение, которое я задал, а на самом деле в ячейке значение было другое

Код

public Object getValueAt(int rowIndex, int columnIndex) {
  Boolean v = rows.get(rowIndex).get(columnIndex);
  if (v != null) {
    return v.booleanValue() ? "Выполнено" : "Не выполнено";
  }
  return "";
}

PM   Вверх
dorogoyIV
Дата 25.5.2010, 08:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


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

Репутация: 36
Всего: 46



aleksandy, возвращает string, а надо boolean
PM MAIL   Вверх
aleksandy
Дата 26.5.2010, 07:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 260
Регистрация: 17.12.2006

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



dorogoyIV, согласен. Был не прав.
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.0450 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


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

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