3

Outline構造化データを表示するために from netbeans を使用しています。

選択した行をツリー内のオブジェクトにマップするにはどうすればよいですか?

4

1 に答える 1

6

新しい Swing Tree Table の発表の例をご覧ください。作成者はデータ モデルの作成 を行っているようですので、ノード選択への応答が役立つはずです。org.netbeans.swing.outline.OutlineNetBeans 6.8でクラスを見つけました。

NetBeans/platform11/modules/org-netbeans-swing-outline.jar

補遺:

Outlineはから派生してJTableいるため、表の使用方法: ユーザー選択が役立つ場合があります。上記の例に基づいて、ノードが展開および折りたたまれ、選択が一定のままになると、行番号が明らかに変化することを示すリスナーを次に示します。

outline.getSelectionModel().addListSelectionListener(new ListSelectionListener() {
    @Override
    public void valueChanged(ListSelectionEvent e) {
        int row = outline.getSelectedRow();
        File f = (File) outline.getValueAt(row, 0);
        if (!e.getValueIsAdjusting()) {
            System.out.println(row + ": " + f);
        }
    }
});

暫定ではありますが、 と を参照してOutlineModelくださいDefaultOutlineModel。前者はTreeModelandTableModelと offersの両方を実装していますTreePathSupport。後者は、「TableModelEvent と TreeModelEvent の間のインピーダンスの不一致」に言及しています。

と同様JTableに、ビューで選択された行インデックスは、おそらく並べ替えなどが原因で、モデル内の対応する行と一致しない場合があります。このgetValueAt()メソッドは、 を呼び出す便利な方法のようconvertRowIndexToModel()です。これは、「各コンポーネントのビューとコントローラーの部分を 1 つの UI (ユーザー インターフェイス) オブジェクトに折りたたむ」Swing の分離可能なモデル アーキテクチャでは一般的です。Swing アーキテクチャの概要を参照してください。

于 2010-05-15T20:03:52.910 に答える