JTreeのノード行の間に空白を追加することは可能ですか?ノードアイコンにカスタム画像を使用していますが、画像は標準のノードアイコンよりも大きいと思います。そのため、ノードアイコンは非常に近くに配置されています。少し離れていれば見栄えが良くなります。
質問する
4537 次
1 に答える
4
ツリーノード間に実際の間隔を追加するには、UIを変更し、適切なAbstractLayoutCacheサクセサを返す必要があります(デフォルトでは、JTreeは行の高さの値に応じてFixedHeightLayoutCacheまたはVariableHeightLayoutCacheの2つのクラスを使用します)。
ノード間にスペースを追加する最も簡単な方法は、レンダラーを変更することです。これにより、次のように境界線が追加されます。
public static void main ( String[] args )
{
JFrame frame = new JFrame ();
JTree tree = new JTree ();
tree.setCellRenderer ( new DefaultTreeCellRenderer ()
{
private Border border = BorderFactory.createEmptyBorder ( 4, 4, 4, 4 );
public Component getTreeCellRendererComponent ( JTree tree, Object value, boolean sel,
boolean expanded, boolean leaf, int row,
boolean hasFocus )
{
JLabel label = ( JLabel ) super
.getTreeCellRendererComponent ( tree, value, sel, expanded, leaf, row,
hasFocus );
label.setBorder ( border );
return label;
}
} );
frame.add ( tree );
frame.pack ();
frame.setLocationRelativeTo ( null );
frame.setDefaultCloseOperation ( JFrame.EXIT_ON_CLOSE );
frame.setVisible ( true );
}
これは、静的な行の高さを設定するよりも少し難しいですが(Subsがコメントで提供しているように)、さまざまなOSで可能なフォントサイズとスタイルが異なるため、より適切です。したがって、どこでもサイズの問題は発生しません。
ちなみに、ノード選択の表現を好きなように変更することもできます。そうすれば、視覚的に間隔を偽造することもできます。
于 2012-05-18T13:03:52.377 に答える