2012-01-24 9 views
0

カスタムツリーセルレンダラーを実装する必要がある状況があります。 私の仕様では、親ノードのチェックボックスノードとテキストのみを用意し、デフォルトのツリーセルレンダラーで使用されるフォルダアイコンは使用しません。CheckBoxノードレンダラー

私は次のコードスニペットでそれを達成しました。

public Component getTreeCellRendererComponent(JTree tree, Object value, 
     boolean selected, boolean expanded, boolean leaf, int row, 
     boolean hasFocus) { 


    JLabel l = (JLabel)renderer.getTreeCellRendererComponent(
      tree, "", true, expanded, leaf, row, true); 


    l.setIcon(null); 
    l.setText(value.toString()); 
     panel.removeAll(); 
     panel.add(this, BorderLayout.WEST); 
     panel.add(l); 
     return panel; 

} 

結果のスクリーンショットは次のとおりです。 Parent Node Output

ここで、テキスト「1」を囲む灰色の領域が表示されます。

灰色の領域をクリアするように案内できますか?

出力は、テキストの周りに灰色を持たないものでなければなりません。

:)この問題については

+0

を含ま返しColorTreeCellRenderersetBackgroundに非常に単純な回避策があります。 'panel.setOpaque(false);' – Robin

+0

@Robinを呼び出してみてください。 setOpaqueはここでは動作しません。それを試してみました 。 – Achilles

答えて

3

は昨日から

Color clr = UIManager.getColor("Tree.textForeground"); 

exampleはグレー色は、おそらくあなたのパネルから来る

+0

あなたはrendererer.setBackground(UIManager.getColor( "Tree.textForeground"))を意味しますか? – Achilles

+0

@Achillesは、RendererがComponentを返すまで、昨日投稿したコード例を試していますか?変数 'textForeground = UIManager.getColor(" Tree.textForeground ");および' textBackground = UIManager.getColor( "Tree。あなたの問題を理解していることを確かめてください - > 1年(1と1/2)私はSwingメソッドがたくさんある同じIceHockeyを持っていました:-) – mKorbel

+0

私はアプローチを試しましたあなたが示唆した。しかし、それは動作していないようです。上記のコードに気付いたら、ラベルを使用してラベル内にテキストを置き、ラベルをパネル内に配置します。助言がありますか ? – Achilles