2011-07-06 14 views
1

Jtreeを以下のように見えるようにするには、拡張と折りたたみを許可するプラスとマイナスのアイコンを使用します。Java:JTreeに拡張/折りたたみのプラス/マイナスアイコンがありますか?

現在のところ、デフォルトのJTreeは、ダブルクリックすると展開および折りたたまれます。このダブルクリックを別の機能に置き換えて、下のようなマイナスプラスアイコンをクリックするだけでツリーを展開/折りたたむことができます。拡大と崩壊を可能にプラスとマイナスのアイコンで

enter image description here

答えて

4

これらは、Windows LAFのデフォルトのアイコンです。他のLAFには異なるアイコンがあります。

UIManagerを使用して独自のアイコンを設定できます。 UIManager Defaultsを参照してください。

または、単一のJTreeにのみカスタムアイコンを使用できます。 Customizing a Tree's Displayを参照してください。

以下のようなマイナスプラスアイコンをクリックするだけでツリーを展開/折りたたむことができます。

これはデフォルトの動作です。

+1

しかし、どのようにあなたがトンを上書きしません彼は行動をダブルクリックして行を展開するのではなく、何か他のことをするのですか?展開は、+/-矢印をクリックしたときにのみ行われます。行の他の場所でダブルクリックすると、別のビューで選択したアイテムを開くなど、何か異なる操作を行う必要があります。 –

+0

ダブルクリックの崩壊/拡大を止める方法と、+/-をクリックしたときの崩壊/展開を同時に行う方法はわかりません。 – Charbel

10

あなたはL & FのTree.collapsedIconTree.expandedIconプロパティを変更し、独自のアイコンを供給する必要があります。ここでは

UIManager.put("Tree.collapsedIcon", new IconUIResource(new NodeIcon('+'))); 
UIManager.put("Tree.expandedIcon", new IconUIResource(new NodeIcon('-'))); 

は、それが内部に+/-を持つ単純な正方形のだ、私が使用するアイコンです:

public class NodeIcon implements Icon { 

    private static final int SIZE = 9; 

    private char type; 

    public NodeIcon(char type) { 
     this.type = type; 
    } 

    public void paintIcon(Component c, Graphics g, int x, int y) { 
     g.setColor(UIManager.getColor("Tree.background")); 
     g.fillRect(x, y, SIZE - 1, SIZE - 1); 

     g.setColor(UIManager.getColor("Tree.hash").darker()); 
     g.drawRect(x, y, SIZE - 1, SIZE - 1); 

     g.setColor(UIManager.getColor("Tree.foreground")); 
     g.drawLine(x + 2, y + SIZE/2, x + SIZE - 3, y + SIZE/2); 
     if (type == '+') { 
      g.drawLine(x + SIZE/2, y + 2, x + SIZE/2, y + SIZE - 3); 
     } 
    } 

    public int getIconWidth() { 
     return SIZE; 
    } 

    public int getIconHeight() { 
     return SIZE; 
    } 
} 
0

それとも単純に考える:)

class SourceListTreeUI extends BasicTreeUI 
{ 

    int offset = 10; 

    protected int getRowX(int row, int depth) 
    { 
     return totalChildIndent * (depth + offset); 
    } 
} 
関連する問題