Редактор ячеек JXTreeTable и JComboBox - PullRequest
2 голосов
/ 04 августа 2009

Как я могу использовать JComboBox как редактор ячеек в JXTreeTable? Можете ли вы дать мне рабочий пример, пожалуйста?

Ответы [ 2 ]

2 голосов
/ 02 августа 2010
table.getColumn(0).setCellEditor(
    new DefaultCellEditor(new JComboBox(new Object[]{"A", "B", "C"})));
0 голосов
/ 27 августа 2016

Вы можете использовать JComboBox, используя редактор ячеек для всех столбцов, используя приведенный ниже код, кроме столбца, который JXTreeTable использует для отображения иерархических данных.
Пример:

    TableColumnExt column = this.tree.getColumnExt(1);
    column.setCellEditor(new DefaultCellEditor(new JComboBox());

т.е. Вы не можете использовать JComboBox для столбца, который JXTreeTable использует для отображения иерархических данных.

В JXTreeTable Java-документе они упоминают, что

JXTreeTable - это специализированная таблица, состоящая из одного столбца, в котором отображаются иерархические данные , и любого количества других столбцов, в которых отображаются обычные данные.

JXTreeTable создает внутренне TreeTableCellEditor, который используется для отображения иерархических данных.

TreeTableModel предоставляет метод getHierarchicalColumn(), в котором можно указать, какой столбец используется для отображения иерархических данных

Теперь, если вы хотите указать JComboBox в первом столбце (столбец 0-й позиции по умолчанию является иерархическим столбцом), тогда вам нужно предоставить другой индекс столбца, используя TreeTableModel, в противном случае вам придется сместить свой столбец (рекомендуется со своей стороны). 1032 *

Код для предоставления другого столбца для иерархических данных

this.tree = new JXTreeTable(new DefaultTreeTableModel() {
    public int getHierarchicalColumn() {
       return 2;
    }
 });

Предварительный просмотр enter image description here

ПРИМЕЧАНИЕ. Я предоставил это решение таким образом, чтобы вы могли достичь своего решения с минимальным кодом настройки. Может быть и другой путь, но я лично считаю, что это решение очень легко реализовать

...