6

私はtreetable使用を構築しており、選択した値に応じてアイテムJXTreeTabbleを無効/有効にしたいと考えています。menuだから、私はこのコードを私の中に入れようとしましたtable model

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

        return null;

    }

問題

上記は、の内容がtable展開されていない場合にのみ機能します。indexのは のselected rowよりも大きい可能性があるためsizeですable model(モデルには 2 つのアイテムを含めることができ、すべてを展開すると行には 10 のアイテムを含めることができます)。また、 のobject typeは とparentは異なりchildrenます (チャプターを持つ本を子と考えてください)。

上記を正しく行う方法として何を提案しますか?

4

3 に答える 3

7

が行番号であると仮定しindexて、次のようにしてノード オブジェクトを取得します。

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

wheretreetableは、このテーブル モデルを使用するテーブルへのポインタになります。

于 2013-04-29T16:34:12.853 に答える
1

JXTreeTable では、treeTable の行と 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();

オブジェクトからクラスを取得する結果、オブジェクトを解析して値を取得できます

于 2013-05-14T11:55:21.303 に答える
0

インデックスは、ビューとモデルで異なる場合があります。最初に選択した行のインデックスを調整する必要がありますconvertRowIndextToModel()

于 2011-11-01T07:35:49.740 に答える