Получить выбранное значение из JXTreeTable - PullRequest
6 голосов
/ 01 ноября 2011

Я строю treetable, используя JXTreeTabble, и я хочу отключить / включить menu элементы в зависимости от выбранного значения.Итак, я попытался поместить этот код в мой table model:

public Object getValueAt(int index) {
        if (index >= 0 && index < root.getSize()){
            return root.get(index);
        }

        return null;

    }

Проблема

Выше работает только если содержимое tableне расширенПотому что index из selected row может быть больше, чем size из t able model (модель может иметь два элемента, а строка может иметь 10, когда все развернуто).Кроме того, object type из parent отличается от children (представьте себе книгу с главами как дети).

Что бы вы предложили в качестве способа сделать вышеправильно?

Ответы [ 3 ]

7 голосов
/ 29 апреля 2013

предполагая, что index является вашим номером строки, попробуйте следующее, чтобы получить объект узла:

TreePath path = treetable.getPathForRow(index);
Object node = path.getLastPathComponent();

, где treetable будет указателем на таблицу, использующую эту модель таблицы.

1 голос
/ 14 мая 2013

в JXTreeTable вы можете получить доступ к значению на основе row и nodeClass из вашего treeTable. Пример:

int row=treeTable.getSelectedRow();
//get value from column
Object object= treeTable.getValueAt(row, yourColumn);
TreePath path= treeTable.getPathForRow(row);
Object o= path.getLastPathComponent();
Class<? extends Object> entity=o.getClass();

В результате вы получите класс от объекта, вы можете проанализировать объект, чтобы получить значение

0 голосов
/ 01 ноября 2011

Индексы могут отличаться в представлении и модели. Сначала необходимо настроить индекс выбранной строки, используя convertRowIndextToModel()

...