是否可以在JTree中的节点行之间添加一些空格?我使用节点图标的自定义图像,我猜图像比标准节点图标大,所以节点图标坐在一起非常靠近。如果有一点分离,它会更好看。在JTree中的行之间添加垂直填充/空间?
5
A
回答
3
要添加,你将不得不修改UI,并返回一个合适的继任者AbstractLayoutCache树节点之间的实际间隔(默认情况下使用JTree的两个班,根据该行高度值:FixedHeightLayoutCache或VariableHeightLayoutCache)。
添加节点之间的一些间距最简单的方法是修改渲染器,所以它会有一些额外的边界,例如:
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);
}
这仍然比仅仅设置静态行高难一点(作为子提供给你的评论),但它是更好的,由于不同的操作系统上可能的字体大小和风格。所以你不会在任何地方遇到尺寸问题。顺便说一下,您还可以按照自己喜欢的方式更改节点选择表示法,这样您甚至可以在视觉上伪造间距。
+1
是的,这就是我最终做的事情(同时将JTree的行高设置为0,以便它将高度计算推迟到单元格渲染器)。工作得很好。 –
相关问题
- 1. TextBlock填充垂直空间
- 2. Textarea填充垂直空间
- 3. 如何填充垂直格子之间的空间
- 4. Bootstrap - 填充剩余的垂直空间
- 5. 填充剩余的垂直空间
- 6. 在换行符之间添加垂直空间
- 7. 按钮填充垂直空间
- 8. iOS - 填充可用垂直空间
- 9. 引导行之间的垂直空间
- 10. 如何在页眉和页脚之间填充空的垂直空间
- 11. 在vim中添加行间垂直空间
- 12. 如何在UINavigationBar和UISegmentedControl之间添加垂直空间?
- 13. Bootstrap方式在字段之间添加垂直空间
- 14. 用文本填充的div之间复杂的垂直间距
- 15. 在中间垂直添加一行
- 16. 在IE中的表行之间的垂直空间太多
- 17. 垂直重复标题和链接之间的图像填充空间
- 18. 删除垂直格之间的空间
- 19. 两个垂直div之间的空间
- 20. div标签之间的垂直空间
- 21. 如何在Ionic中使用Flexbox填充垂直空间
- 22. 在Bootstrap 4中添加垂直堆栈列之间的间距
- 23. 在值之间填充空行
- 24. 在填充行之间的新行中添加信息
- 25. 如何在投影仪中的两段/句子之间添加垂直空间?
- 26. GTK comboBox流动来填充工具栏中的垂直空间
- 27. 图像填充容器中的垂直空间
- 28. C#容器 - 在调整大小时垂直填充空间
- 29. 在VerticalFieldManager上添加字段之间的垂直间距
- 30. Div来填充剩下的垂直空间
你使用过JTree的setRowHeight()方法吗?您可以将其设置为0,以使每一行分别计算其高度。 – Subs