Как вставить столбец в определенную позицию в JTable - PullRequest
1 голос
/ 01 января 2012

У меня есть JTable с предопределенной моделью

как попросить модель вставить определенный столбец в определенную позицию?

, поэтому я хочу что-то вроде: DefaultTableModel.insertRow (int,Объект []) для столбцов

Ответы [ 4 ]

4 голосов
/ 01 января 2012

Действительно ли необходимо добавить столбец в вашем TableModel по определенному индексу? Вы можете легче настроить порядок столбцов в представлении (JTable), как описано в классе javadoc JTable

По умолчанию столбцы могут быть переставлены в JTable так, чтобы столбцы представления отображались в порядке, отличном от столбцов в модели. Это никак не влияет на реализацию модели: когда столбцы переупорядочиваются, JTable поддерживает новый порядок столбцов внутри и преобразует индексы столбцов перед запросом модели.

Это достигается с помощью метода JTable#moveColumn.

Добавление столбца к вашему DefaultTableModel завершено вызовом DefaultTableModel#addColumn метода

3 голосов
/ 01 января 2012

Не существует метода insertColumn, такого как DefaultTableModel.insertRow () для вставки строк.Чтобы вставить столбец в определенную позицию, необходимо добавить столбец с помощью DefaultTable.addColumn (), а затем переместить новый столбец в нужную позицию.

    JTable table = new JTable(rows, cols);
    table.setAutoCreateColumnsFromModel(false);

    DefaultTableModel model = (DefaultTableModel)table.getModel();
    TableColumn col = new TableColumn(model.getColumnCount());

    col.setHeaderValue(headerLabel);
    table.addColumn(col);
    model.addColumn(headerLabel.toString(), values);
    table.moveColumn(table.getColumnCount()-1, vColIndex);
0 голосов
/ 22 ноября 2012

эта ссылка может помочь http://www.roseindia.net/java/example/java/swing/InsertColumn.shtml

public void positionColumn(JTable table,int col_Index) {
 table.moveColumn(table.getColumnCount()-1, col_Index);
  }
0 голосов
/ 01 января 2012

С DefaultTableModel:

В конце нужно позвонить fireDataChanged. Существует только addColumn с несколькими перегрузками. Это не помеха, так как порядок отображения независим. Можно переместить столбец в другую позицию, и нужно позаботиться об индексе представления! = Индекс столбца. Чтобы получить правильный индекс представления сразу после добавления столбца, необходимо получить доступ к JTable и вызвать moveColumn.

Временами мне было проще создать новую TableModel и назначить ее. Или не используйте DefaultTableModel.

...