Outline
構造化データを表示するために from netbeans を使用しています。
選択した行をツリー内のオブジェクトにマップするにはどうすればよいですか?
新しい Swing Tree Table の発表の例をご覧ください。作成者はデータ モデルの作成 を行っているようですので、ノード選択への応答が役立つはずです。org.netbeans.swing.outline.Outline
NetBeans 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
。前者はTreeModel
andTableModel
と offersの両方を実装していますTreePathSupport
。後者は、「TableModelEvent と TreeModelEvent の間のインピーダンスの不一致」に言及しています。
と同様JTable
に、ビューで選択された行インデックスは、おそらく並べ替えなどが原因で、モデル内の対応する行と一致しない場合があります。このgetValueAt()
メソッドは、 を呼び出す便利な方法のようconvertRowIndexToModel()
です。これは、「各コンポーネントのビューとコントローラーの部分を 1 つの UI (ユーザー インターフェイス) オブジェクトに折りたたむ」Swing の分離可能なモデル アーキテクチャでは一般的です。Swing アーキテクチャの概要を参照してください。