【问题标题】:How do I make my TreeCellRenderer fill my JTree?如何让我的 TreeCellRenderer 填充我的 JTree?
【发布时间】:2013-02-11 02:59:19
【问题描述】:

如何让树单元格填充 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);

【问题讨论】:

    标签: java swing jpanel jtree renderer


    【解决方案1】:
    • JPanel panel = new JPanel();JPanel 是容器,

    • JPanel默认返回zero Dimension

    • 只有空的JPanel(仅限AFAIK)在BorderLayotu中返回10px,如果JPanels被放置到NORTH,SOUTH,WEST,SOUTH区域,然后创建非常漂亮的10pxs EmptyBorders

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

    • 不知道为什么您将JPanel 作为Renderers JComponent 放入JTree,也许还有其他方法,确保尽快发布SSCCE 以获得更好的帮助

    【讨论】:

    • 对不起,mKorbel,我本来想把 JPanel 留空,但实际上里面有很多组件。我只是没有将它们包含在我的帖子中 - 我会更清楚地说明。
    • Renderers Concept 与 JComboBox、JList、JTable、JTree 相同,返回 PreferredSize 来自 JPanel,但您的问题是关于填充可用的 JViewport Dimension???,关于将 JPanel 作为 Renderer 拟合到 Rectangle返回 JViewport???
    • 对延迟回复表示歉意;你是对的,设置 getPreferredSize 对我有用。
    猜你喜欢
    • 1970-01-01
    • 2023-03-21
    • 1970-01-01
    • 2013-02-25
    • 2020-04-30
    • 2017-09-22
    • 1970-01-01
    • 1970-01-01
    • 2015-11-08
    相关资源
    最近更新 更多