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

#java #object #selected #tablemodel #jxtreetable

#java #объект #выбрано #табличная модель #jxtreetable

Вопрос:

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

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

        return null;

    }
 

Проблема

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

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

Ответ №1:

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

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

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

Ответ №2:

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

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

Ответ №3:

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