Получить выбранное значение из JXTreeTable

Я создаю 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 для table model (модель может иметь два элемента, а строка может иметь 10, когда все развернуто). Кроме того, object type из parent отличается от children (подумайте о книге с главами как о детях).

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


person user276002    schedule 01.11.2011    source источник


Ответы (3)


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

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

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

person Andre Holzner    schedule 29.04.2013

в JXTreeTable вы можете получить доступ к значению на основе строки и класса узла из вашей таблицы дерева. пример:

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();

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

person Roufiq    schedule 14.05.2013

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

person zeller    schedule 01.11.2011