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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> JTable и своя TableModel, проблемы с отображением изменения данных 
:(
    Опции темы
Saphir
  Дата 9.2.2011, 18:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Создаю свою модель. Таблица изначально пустая. При вводе данных эта таблица должна обновляться. Проблема в том, что несмотря на добавление нового элемента в объект данных, изменений в таблице не происходит - она остается пустой.
Код модели:
Код

public class PointTableModel extends AbstractTableModel {
    
        private ArrayList<Point> alPoints;
        
        public PointTableModel() {
            alPoints = mode ? InitialPointList.getInstance().getAlPoints() : EndPointList.getInstance().getAlPoints();
        }
        
        private ArrayList<TableModelListener> alListeners = new ArrayList<TableModelListener>();
        
        @Override
        public void addTableModelListener(TableModelListener e) {
            alListeners.add(e);
        }

        @Override
        public Class<?> getColumnClass(int arg0) {
            return Double.class;
        }

        @Override
        public int getColumnCount() {
            return 3;
        }

        @Override
        public String getColumnName(int key) {
            switch (key) {
            case 0:
                return "№";
            case 1:
                return "X";
            case 2:
                return "Y";
            case 3:
                return "Z";
            }
            return "";
        }

        @Override
        public int getRowCount() {
            return alPoints.size();
        }

        @Override
        public Object getValueAt(int row, int column) {
            switch (column) {
            case 0:
                return alPoints.get(0).getX();
            case 1:
                return alPoints.get(1).getY();
            case 2:
                return alPoints.get(2).getZ();
            }
            return "";
            
        }

        @Override
        public boolean isCellEditable(int arg0, int arg1) {
            return true;
        }

        @Override
        public void removeTableModelListener(TableModelListener o) {
            alListeners.remove(o);
            
        }
        
        public void redisplay() {
            fireTableDataChanged();
        }
    
    }


Код добавления нового элемента:
Код

final Point point = new Point(new Double(xText.getText()), new Double(yText.getText()));
InitialPointList.getInstance().add(point);
((PointTableModel)table.getModel()).redisplay();


Создание таблицы:
Код

table = new JTable(new PointTableModel());

PM MAIL   Вверх
_Y_
Дата 9.2.2011, 19:32 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


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

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



А не это ли мы только что обсуждали? Или что-то похожее?


И еще здесь.


--------------------
Я вот в этом поучаствовал: http://sbor-nik.appspot.com/kick.jsp?id=sbor5737960678883328 (на правах саморекламы:)
PM MAIL WWW   Вверх
Saphir
Дата 9.2.2011, 21:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



_Y_, у вас данные добавляются в таблицу... Следуя совету попробовать другие методы fire..., проблему не решил. Если не сложно, покажите пожалуйста код вашего производного класса AbstractTableModel.

Update.

Помог вызов метода updateUI, класса JTable. Узнать бы почему repaint не помогал... Спасибо вам за помощь.  smile

Это сообщение отредактировал(а) Saphir - 9.2.2011, 22:04
PM MAIL   Вверх
_Y_
Дата 9.2.2011, 23:18 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


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

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



Цитата(Saphir @  9.2.2011,  21:18 Найти цитируемый пост)
Помог вызов метода updateUI, класса JTable. Узнать бы почему repaint не помогал... 


Мне тоже интересно. Загадочна природа графических интерфейсов smile


--------------------
Я вот в этом поучаствовал: http://sbor-nik.appspot.com/kick.jsp?id=sbor5737960678883328 (на правах саморекламы:)
PM MAIL WWW   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "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.0758 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


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

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