2011-11-01 17 views
6

JXTreeTabbleを使用してtreetableをビルドしていますが、選択した値によってmenuのアイテムを無効にしたいとします。だから、私は私のtable modelにこのコードを入れてみました:tableの内容が展開されていない場合JXTreeTableから選択値を取得

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

     return null; 

    } 

問題

上記にのみ機能します。 selected rowindexは、able modelsizeより大きくなる可能性があります(モデルには2つのアイテムがあり、すべてが展開されると10個の行を持つことができます)。また、parentobject typeは、childrenとは異なります(子どもの章としての本を考えてください)。

上記を正しく行う方法として何をお勧めしますか?

答えて

0

この表示は、モデルによって異なる場合があります。あなたはindexを想定しconvertRowIndextToModel()

6

を使用して最初に選択された行のインデックスを調整する必要があり、ノードオブジェクトのホールドを取得するには、以下しようと、あなたの行番号です:

treetableが使用してテーブルへのポインタになり
TreePath path = treetable.getPathForRow(index); 
Object node = path.getLastPathComponent(); 

このテーブルモデル。

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

結果、あなたが答えだ値

関連する問題