3

次の問題があります。

ツリーのルート (以下のクラス) とノードが同じ型ではないことを除いて、JTeeTable のようなテーブル コンポーネントが必要です。

たとえば、次のクラスがあるとします。

public final class Entry {

    private int id;
    private String title;
    private String notes;

    private List<SubEntry> subEntryList; /** @see SubEntry*/
}


public final class SubEntry{
    private int id;
    private String title;
    private String notes;

}

これらの 2 つのクラスは似ており、継承のケースの動機となる可能性がありますが、そのように関連していません車のパーツのリストを載せた車、または俳優のリストを載せた映画と考えてください。

この 2 週間、私は上記を視覚的に表現する方法を考え続けてきました。JTreeTable コンポーネントを使用することを考えましたが、サブエントリ (ノード??) がエントリ (リーフ??) と同じタイプである場合のクロス ショーの使用例はすべて表示されます。

これまでの私の考え: テーブルを使用すると、列が同じ名前を共有することを見て、テーブルと別のテーブルを TableCellRenderer として使用し、親行のダブルクリックで表示/非表示をサポートする必要があると考えました。

先行きが不安ですが…。

ですから、これについてどうすればよいかについて何かアイデアがあれば、あなたのアイデアを共有してください。

アップデート

//I finally managed to sort out the tree table model.
//Below is the snippet of what I have done. 

        private List<Entry> root; 

        public EntryTreeTableModel(List<Entry> root) { 
              this.root = root;
        } 

    public int getChildCount(Object parent) { 

      if (parent instanceof List){ 
             return ((ArrayList<Entry>) parent).size(); 
      }else if (parent instanceof Entry){ 
            return ((Entry)parent).getSubEntries().size(); 
      } 
     return 0; 
   }

   public Object getChild(Object parent, int index) {
        if (parent instanceof List){
            return ((ArrayList<Entry>) parent).get(index);
        }else if (parent instanceof Entry){
            return ((Entry)parent).getSubEntries().get(index);
        }else if (parent instanceof Entry){
            return ((SubEntry)parent); // Hmmm, this feels wrong. Check later.
        }
            return "...";  // Just to indicate that something went wrong
    }

同じアプローチに従う他の方法

アイデアを共有してくれたすべての人に感謝します。Trashgod にもう一度感謝します...

4

1 に答える 1

4

この例で示唆されているように、クラスorg.netbeans.swing.outline.Outlineは適切な候補のようです。特に、「あらゆる種類のオブジェクトをツリー ノードとして受け入れる」 を使用します。モデルを例のと比較すると、はディレクトリに対応し、そこに含まれるファイルのリストに対応します。関連する例については、「データ モデルの作成」を参照してください。Outlinejavax.swing.tree.TreeModelEntrySubEntry

于 2011-04-14T14:09:47.497 に答える