2014-01-13 5 views
1

У меня есть Jtable, в которой я устанавливаю данные с помощью функции setDataVector. Он работает нормально, но предположим, что если я изменил некоторую ширину столбца, просто перетащив с помощью мыши и после того, как новые данные загрузятся в одну и ту же таблицу то ширина этого столбца возвращается к положению по умолчанию. Поэтому в основном я хочу сохранить эту ширину, даже если новые данные загружаются.Jtable сохранить ширину столбца

+0

Я с помощью пользовательского TableModel – avinash

ответ

6

Когда вы используете метод setDataVector(), структура таблицы может измениться, поэтому таблица автоматически воссоздает TableColumnModel, и вы теряете свою настройку.

При создании JTable в первый раз используйте следующий код:

JTable table = new JTable(...); 
table.setAutoCreateColumnsFromModel(false); 

предотвратить TableColumnModel от воссоздается.

+0

Спасибо за помощь, я пытался использовать setAutoCreateColumnsFromModel(), но после этого изменения я получаю пустой стол. Также я использую пользовательскую модель таблицы для Jtable. – avinash

+0

@avinash, 'я получаю пустой стол. 'Его простое решение, но поскольку вы все еще не принимали ответы ни на один из своих предыдущих вопросов, я не собираюсь тратить время на помощь тому, кто не ценит Помогите. – camickr

+0

О, извините, я не знал об этом «принимающем ответе». Я попытаюсь позаботиться об этом в будущем. – avinash

1

Это происходит потому, что при использовании setDataVector() согласно документам, которые воссоздают столбцы, а ширина столбца меняется на значение по умолчанию.

Попробуйте использовать setAutoCreateColumnsFromModel(), чтобы предотвратить это поведение.

0

Как вы используете пользовательскую модель таблицы. Не используйте setDateVector(), он воссоздает столбцы. Вы можете управлять шириной столбца с использованием setPreferredWidth() метод вручную:

 table.setModel(buildTableModel(rs)); 
     TableColumnModel tcm = table.getColumnModel(); 
     tcm.getColumn(0).setPreferredWidth(80); 
     tcm.getColumn(1).setPreferredWidth(200); 
     tcm.getColumn(2).setPreferredWidth(100); 
     tcm.getColumn(3).setPreferredWidth(100); 
     tcm.getColumn(4).setPreferredWidth(100); 
Смежные вопросы