2011-11-01 14 views
6

Buduję treetable przy użyciu JXTreeTabble i chcę wyłączyć/stanie menu elementów w zależności od wybranej wartości. Więc starałem się umieścić ten kod w moim table model:Uzyskać wybraną wartość z JXTreeTable

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

     return null; 

    } 

Problem

Powyższy działa tylko wtedy, gdy zawartość table nie są rozszerzane. Ponieważ index z selected row może być większy niż size z t(model może mieć dwa elementy i wiersz może mieć 10, gdy wszystko jest rozszerzone). Ponadto, object type z parent różni się od children (pomyśl o książce z rozdziałami, jak to dzieci).

Co zaproponowałbyś jako sposób na poprawne wykonanie powyższego?

Odpowiedz

0

Indeksy mogą się różnić w widoku i modelu. Trzeba dostosować wybrany indeks wiersza pierwszym użyciu convertRowIndextToModel()

6

zakładając index jest numer wiersza, spróbuj wykonać następujące czynności, aby zdobyć obiektu węzła:

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

gdzie treetable byłby wskaźnik do stołu za pomocą ten model tabeli.

+0

to jest odpowiedź. –

1

w JXTreeTable można uzyskać dostęp do wartości na podstawie wiersza i nodeClass z treeTable. przykład:

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

wynik dostaniemy klasy z obiektu, można analizować obiekt, aby uzyskać wartość

Powiązane problemy