【问题标题】:How to set tooltip in TreeCellRenderer?如何在 TreeCellRenderer 中设置工具提示?
【发布时间】:2014-06-03 11:35:35
【问题描述】:

我坚持将工具提示设置为我添加到 JTree 中节点的 JPanel 之一。这个问题可能与JTree node's changable tooltip 类似,但不完全类似。

我也在使用填充了一些(自定义)节点的 JTree。每个节点都包含一个复选框、一个颜色框 (JPanel) 和节点路径。我正在实现 TreeCellRenderer。我没有在下面发布要添加到节点的代码,因为我认为没有必要。

以下是我的部分代码:

    public class CheckTreeCellRenderer extends JPanel implements TreeCellRenderer {

        private static final long serialVersionUID = 4025435851260573240L;

        CheckTreeSelectionModel selectionModel; 
        private TreeCellRenderer delegate; 
        TristateCheckBox checkBox = new TristateCheckBox();
        JPanel panel = new JPanel();

        public CheckTreeCellRenderer(TreeCellRenderer delegate, CheckTreeSelectionModel selectionModel){
            this.delegate = delegate;
            this.selectionModel = selectionModel;

            setLayout(new BorderLayout()); 
            setOpaque(false); 
            checkBox.setOpaque(false);
        }

        public Component getTreeCellRendererComponent(JTree tree, Object value, boolean selected, boolean expanded, boolean leaf, int row, boolean hasFocus){
            Component renderer = delegate.getTreeCellRendererComponent(tree, value, selected, expanded, leaf, row, hasFocus);
            panel.setToolTipText("Hello");
            removeAll();
        add(checkBox, BorderLayout.WEST);
        add(panel, BorderLayout.CENTER);
        add(renderer, BorderLayout.EAST);

        return this;
    }
}

如何为添加到节点的 JPanel 设置工具提示?

【问题讨论】:

  • “我没有在下面发布要添加到节点的代码,因为我认为没有必要。” 为了尽快获得更好的帮助,请发布MCVE(最小完整且可验证的示例)。
  • 正如我所提到的,我正在向节点添加三个组件 - 一个复选框、一个 JPanel 和一个树节点路径。但是前两个组件是自定义组件,因此在此处发布它们的代码将是无关紧要且冗长的。
  • JComponent 有方法 setTooltipText。因此,您需要在 getTreeCellRendererComponent 方法中设置工具提示。类似 this.setToolTipText("It's a text");
  • 是的,我已经写在上面的代码示例中了。不幸的是,这不起作用。

标签: java swing jtree renderer


【解决方案1】:

看看JTree.getToolTipText的文档:

注意:为了让 JTree 正确显示其渲染器的工具提示,JTree 必须是使用 ToolTipManager 注册的组件。这可以通过调用 ToolTipManager.sharedInstance().registerComponent(tree) 来完成。这不是自动完成的!

这将解决它。

【讨论】:

    猜你喜欢
    • 2011-02-13
    • 1970-01-01
    • 2013-05-06
    • 1970-01-01
    • 2015-01-10
    • 1970-01-01
    • 1970-01-01
    • 2019-09-14
    • 1970-01-01
    相关资源
    最近更新 更多