我通过实现TreeCellRenderer
来制作自定义样式的JTree,如下所示:
JPanel with BoxLayout X-Axis
-------------------------------------------------------------
| | |
| JLabel | Text Area |
| ICON | (JPanel with BoxLayout Y-Axis, 2 JLabels) |
| | |
-------------------------------------------------------------
但现在我遇到了一个问题:
我在这里使用一个更大的图标,并且通向子节点的垂直线的位置仍然是旧的。我希望调整位置垂直线和子节点 - 将垂直线移动到与图标中心对齐。
目前,图标为32x32px;在未来我想根据电池测试区域的总高度引入自动调整大小。因此,最好根据图标的实际大小动态调整线位置。
我该怎么做?
答案 0 :(得分:3)
垂直线的水平位置由BasicTreeUI,left / rightChildIndent的两个属性控制。所以你可以根据实际的图标宽度f.i来设置它们。像:
// your standard icon
Icon icon = ...
BasicTreeUI ui = (BasicTreeUI) tree.getUI();
int iconWidth = icon.getIconWidth() / 2;
ui.setLeftChildIndent(iconWidth);
ui.setRightChildIndent(iconWidth + 10);
请注意,只要在运行时更改LAF,您就必须再次设置它们。