如何让我的 TreeCellRenderer 填充我的 JTree?

sda*_*das 5 java swing renderer jtree jpanel

如何让我的树单元填充 JTree 的宽度:

JTree tree = new JTree();
tree.setCellRenderer(new TreeCellRenderer() { 
    @Override
    public Component getTreeCellRendererComponent(JTree tree, Object value,
        boolean selected, boolean expanded, boolean leaf, int row, 
        boolean hasFocus) {
            // TODO: How do I make this panel fill the width 
            // of the JTree?
            JPanel panel = new JPanel();
            panel.add(new JLabel("ITEM");
            return panel;
        }
});
add(tree);
Run Code Online (Sandbox Code Playgroud)

mKo*_*bel 5

  • JPanel panel = new JPanel();,JPanel是容器,

  • JPanel默认返回zero Dimension

  • 只有空JPanel(仅限 AFAIK)返回10pxin BorderLayotu,如果 JPanel 被放置在 NORTH、SOUTH、WEST、SOUTH 区域,然后创建了非常好的 10pxsEmptyBorders

  • 必须覆盖getPreferredSizefor JPanel,与在 Swing 中绘画所需的方式相同

  • 不知道为什么你把JPanelRenderers JComponent放进去JTree,也许还有/有另一种方式,一定要尽快发布更好的帮助SSCCE