2011-11-01 19 views
6

Estoy construyendo un treetable usando JXTreeTabble y quiero deshabilitar/habilitar menu elementos dependiendo del valor seleccionado. Por lo tanto, he tratado de poner este código en mi table model:Obtener valor seleccionado de JXTreeTable

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

     return null; 

    } 

El problema

Lo anterior sólo funciona si el contenido de la table no se expanden. Porque el index del selected row podría ser más grande que el size del t able model (el modelo puede tener dos elementos y la fila puede tener 10 cuando todo está expandido). Además, el object type del parent es diferente del children (piense en un libro con capítulos como niños).

¿Qué sugieres como una manera de hacer lo anterior correctamente?

Respuesta

0

Los índices pueden diferir en la vista y el modelo. Usted tiene que ajustar el índice de fila seleccionada en primer lugar utilizando convertRowIndextToModel()

6

asumiendo index es su número de fila, intente lo siguiente para controlar la nodo objeto:

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

donde treetable sería un puntero a la tabla usando este modelo de mesa.

+0

Esa es la respuesta. –

1

en JXTreeTable puede acceder al valor basado en la fila y nodeClass desde su treeTable. ejemplo:

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

el resultado que se obtendría una clase del objeto, se podría analizar el objeto de obtener el valor

Cuestiones relacionadas