powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Java [игнор отключен] [закрыт для гостей] / Проблема обновление JList
6 сообщений из 6, страница 1 из 1
Проблема обновление JList
    #34151934
Ku4in
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Проблема такая: есть класс таблиц TTable (мой написанный). Есть JList который отображает список столбиков (имя+тип). Проблема возникла стандартная - как обновлять список после изменения данных в TTable (например пользователь добавил столбик).
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
     class  colListModel  extends  DefaultListModel{
         private  TTable tbl;

         public  colListModel(TTable tbl){
             this .tbl = tbl;
        }

         public   int  getSize() {
             return  tbl.getColCount();
        }

         public  Object getElementAt( int  index) {
             return  tbl.ColToString(index);
        }
     // не уверен в этом коде
         public   void  add(Object el){
            addElement(el);
            fireContentsChanged(el, 0 ,getSize());
        }

Это модель для JList. Но проблема в том, что по событию нажатия клавиши обновляется только
объект TTable. Правильно ли будет обновлять и модель и таблицу, то есть
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
 new  JButton addBtn =  new  JButton("Add");
addBtn.addActionListener( new  ActionListener(){
          public   void  actionPerformed(ActionEvent e) {
              ......MyCol//полученные от пользователя данные
              TTable tbl.addCol(MyCol);
              List1.getModel().addElement(MyCol.toString);

         }
    });
Мне лично не нравится. Хочется обновить только таблицу и правильно ее связать с моделью.
В принципе у меня получилось, но коряво, сильно ограничивает в действиях
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
List1.setModel(UpdateTablesView((DefaultListModel) Tables.getModel()));
..............................
     private  DefaultListModel UpdateTablesView(DefaultListModel dlm) {
        dlm.clear();
         for  ( int  i =  0 ; i < tbl.getTblCount(); i++) {
            TTable tbl = ..........получаю екземпляр таблицы в базе
            dlm.addElement(tbl.getName());
        }
         return  dlm;
    }

...
Рейтинг: 0 / 0
Проблема обновление JList
    #34156537
artgonch
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
У меня аналогичный вопрос: элементами JList являются объекты моих классов. Для отображения их в списке используется мой ListCellRenderer. В процессе работы программы содержимое элементов может меняться (при этом вставка новых элементов или удаление не выполняются). Непонятно, как уведомлять список, что нужно перерисовать содержимое. Метод repaint() не помогает.

А в AbstractTableModel, например, для этого есть методы, уведомляющие таблицу об изменениях.
...
Рейтинг: 0 / 0
Проблема обновление JList
    #34156574
Фотография fixxer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
protected void AbstractListModel#fireContentsChanged(Object source, int index0, int index1)
protected void AbstractListModel#fireIntervalAdded(Object source, int index0, int index1)
protected void AbstractListModel#fireIntervalRemoved(Object source, int index0, int index1)

Только применять нужные методы в нужном месте,
например если _добавили_, то fireIntervalAdded, а не fireContentsChanged
...
Рейтинг: 0 / 0
Проблема обновление JList
    #34158969
Ku4in
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
То есть надо написать свой клас, extanded AbstractListModel и там переписать методы add, removed приблизительно так:
Код: plaintext
1.
2.
3.
4.
5.
.......................
   addElement(Object obj){
         super (obj);
        fireIntervalAded(obj, 0 , this .size()- 1 );
   }
Я правильно понял?
...
Рейтинг: 0 / 0
Проблема обновление JList
    #34158976
Ku4in
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Хотелось бы еще пример.
...
Рейтинг: 0 / 0
Проблема обновление JList
    #34159138
Фотография fixxer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ku4inТо есть надо написать свой клас, extanded AbstractListModel и там переписать методы add, removed приблизительно так:
Код: plaintext
1.
2.
3.
4.
5.
.......................
   addElement(Object obj){
         super (obj);
        fireIntervalAded(obj, 0 , this .size()- 1 );
   }
Я правильно понял?

Нет. Итервал только тот который добавляется
...
Рейтинг: 0 / 0
6 сообщений из 6, страница 1 из 1
Форумы / Java [игнор отключен] [закрыт для гостей] / Проблема обновление JList
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]