2011-11-01 54 views
6

我在使用JXTreeTabble來構建treetable,我想根據所選值禁用/使能menu項目。所以,我試圖把這個代碼在我table model從JXTreeTable中獲取所選值

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

     return null; 

    } 

問題

以上只有當table的內容不展開工作。因爲selected rowindex可能大於t able modelsize(模型可以有兩個項目,當所有內容都展開時,行可以有10個)。另外,parentobject typechildren不同(想起一本書中有兒童章節)。

對於正確地完成上述操作,您會有什麼建議?

回答

0

索引可能在視圖和模型中有所不同。你必須調整首先使用convertRowIndextToModel()

6

假設index是你的行數選定行的索引,請嘗試以下操作以獲取節點對象的保持:

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

其中treetable將使用指針表這個表模型。

+0

這就是答案。 –

1

在JXTreeTable中,您可以根據treeTable中的row和nodeClass訪問值。 例如:

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

的結果,你會從對象得到一個類,你可以解析的對象來獲取值