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