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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Странности с JTable после перерисовки, отображаются данные которых нет в модели 
V
    Опции темы
CrasyMen
Дата 25.5.2009, 19:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



У меня таблица изначально пустая. По мере работы в ней заполняются ячейки через drag&drop. Перетягиваю объект на ячейку и ячейка принимает некоторое значение. Все хорошо пока я не сверну окно или еще что-нибудь сделаю что потребует перерисовки. После перерисовки все изначально пустые ячейки в колонке  принимают значение заполненных ячеек. Видео прилагается.

Присоединённый файл ( Кол-во скачиваний: 8 )
Присоединённый файл  table.zip 152,67 Kb


--------------------
Человек просто обязан ошибаться, раз другие учатся на его ошибках.
[color=skyblue]Хочу сменить ник и сменю как только дадут такую возможность.[/color]
PM MAIL ICQ   Вверх
CrasyMen
Дата 25.5.2009, 20:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Проблема не в модели и не в рендерере
на всякий случай приведу куски кода
кусок модели:
Код

public Group getGroup(int row) {
        if (Server.data.getGroups().size() > 0)
            return Server.data.getGroups().get(row);
        else
            return null;
    }

    public Object getValueAt(int row, int column) {
        Group group = getGroup(row);
        return group.getLessons()[column];
    }

    public void setValueAt(Object value, int row, int column) {
        Group group = getGroup(row);
        Lesson lesson = (Lesson) value;
        if (lesson.getGroup().equals(group)) {
            group.getLessons()[column] = lesson;
            fireTableCellUpdated(row, column);
        }
    }

рендерер:
Код

public class LessonsTableCellRenderer extends JTextArea implements TableCellRenderer {
    public Component getTableCellRendererComponent(JTable table, Object value, boolean isSelected, boolean hasFocus, int row, int column) {
        if (value != null) {
            Lesson lesson = (Lesson) value;
            setText(lesson.getSubject().getShortName());
            setBackground(Color.cyan);
            setPreferredSize(new Dimension(32, 32));
            setEditable(false);
            setLineWrap(true);
            setAlignmentY(JTextArea.CENTER_ALIGNMENT);
        }
        return this;
    }
}


Добавлено через 7 минут и 37 секунд
Проблему решил. Динамически назначаю рендерер для заполненных и не заполненных ячеек. Для незаполненных - один рендерер. Для заполненных - другой.


--------------------
Человек просто обязан ошибаться, раз другие учатся на его ошибках.
[color=skyblue]Хочу сменить ник и сменю как только дадут такую возможность.[/color]
PM MAIL ICQ   Вверх
math64
Дата 27.5.2009, 10:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


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

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



Можно использовать один рендерер, но в случаее заолненной ячейки return this;, а в случае незаполненной return emptyLabel;
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.0447 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


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

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