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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Динамическое изменение таблицы, помогите плз, диплом горит! 
:(
    Опции темы
yezh
Дата 4.5.2006, 09:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 95
Регистрация: 18.12.2005
Где: Москва

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



Как сделать динмическое изменение таблицы, то есть добавление/удаление строк и столбцов? Какие методы надо переопределять в TableModel? Или не надо ничего переопределять, сожно воспользоваться чем-нибудь стандартным? 
З.Ы. При этом данные для заполнения таблицы берутся также из изменяющегося массива, т.е. мне не надо просто скрыть столбец, а убрать его совсем 

Это сообщение отредактировал(а) yezh - 4.5.2006, 10:44
PM MAIL ICQ   Вверх
MrLjaO
Дата 4.5.2006, 10:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



Попробуй так:
Как я понимаю ... и надеюсь ... для работы с таблицей (JTable) ты используешь  class MyTableClass extends AbstractTableModel
 в ней просто напиши ещё одну функцию  ... например  
public void RetrieveData(){...} где в ней будешь или убирать  или добовлять строки  .... 
главное в ней вызови    fireTableDataChanged();   )) Пользуйся ..
Если не понятно объяснил  - стучи )  

Это сообщение отредактировал(а) MrLjaO - 4.5.2006, 10:50
PM MAIL WWW   Вверх
yezh
Дата 4.5.2006, 11:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 95
Регистрация: 18.12.2005
Где: Москва

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



а как потом вызвать эту функцию? вот примерно так:
Код

private class MyTableModel extends AbstractTableModel{

        public MyTableModel(){
            super();
        }
        public int getRowCount() {
            return por+1;
        }

        public int getColumnCount() {
            return pos+1;
        }

        public Object getValueAt(int rowIndex, int columnIndex) {
            return c[rowIndex][columnIndex];
        }
        public boolean isCellEditable(int rowIndex, int columnIndex){
            return true;

        }


        public void setValueAt(Object aValue, int rowIndex, int columnIndex){
            c[rowIndex][columnIndex] = aValue;
        }
        public String getColumnName(int Column){
            return Integer.toString(Column);
        }

        public void RetrieveData(){
        c = new Object[por+1][pos+1];
        c[0][0] = "Пост/потр";
        for(int i = 0; i < por+1; i++)
            for(int j = 0; j < pos+1; j++)
                if(i!=0 || j!=0) {
                    c[i][j] = 0;
                }
        fireTableDataChanged();
        }
    }


а потом так..
Код

tab = new JTable(new MyTableModel());


изначально параметры заданы по умолчанию.. 
Пытаюсь вызвать функцию через tab.getModel().RetrieveData(), не дает, говорит что не может найти метод... 
PM MAIL ICQ   Вверх
MrLjaO
Дата 4.5.2006, 12:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



признаться не понимаю в чём проблема   но я делал так ...
Код


public class Panel extends JPanel {
 Panel(){
MyTableClass m_model;
m_model = new MyTableClass();
m_model.Init(); // инициализируем модель ... (заполняем / создаём  строки)

JTable table;
table = new JTable(m_model);
RetrieveData();

}

public void RetrieveData()
    {
        m_model.RetrieveData();
        this.repaint();
    }
class MyTableClass extends AbstractTableModel {
...
public void RetrieveData(){...}
}
}

что  то типа этого  

Это сообщение отредактировал(а) MrLjaO - 4.5.2006, 12:26
PM MAIL WWW   Вверх
yezh
Дата 4.5.2006, 12:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 95
Регистрация: 18.12.2005
Где: Москва

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



thx, прсто сразу не дошло что надо сделать объект модели таблицы... 
PM MAIL ICQ   Вверх
ShamanTrirukiy
Дата 4.5.2006, 13:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 65
Регистрация: 12.4.2006
Где: Харьков

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



Цитата(MrLjaO @  4.5.2006,  10:49 Найти цитируемый пост)
  fireTableDataChanged();

убранный столбец - это скорее fireTableStructureChanged();
Цитата(yezh @  4.5.2006,  11:08 Найти цитируемый пост)
Пытаюсь вызвать функцию через tab.getModel().RetrieveData(), не дает, говорит что не может найти метод...  

getModel() возвращает AbstractTableModel, попробуй так:  ((MyTableModel)tab.getModel()).RetrieveData() - должно сработать.

P.S. Замечание по оформлению кода. Имена методов в Java пишутся с маленькой буквы(всегда). 
PM MAIL   Вверх
yezh
Дата 4.5.2006, 13:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 95
Регистрация: 18.12.2005
Где: Москва

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



thx, все заработало. Замечание учту 
PM MAIL ICQ   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "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.0461 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


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

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