实现 JTree 工具提示的最佳方式?

2022-09-02 13:41:43

由于 JTree & TreeModel 不提供开箱即用的工具提示,您怎么看,为 JTree 提供特定于项目的工具提示的最佳方式是什么?

编辑:(事后回答我自己的问题。

@Zarkonnen:感谢您的getTooltipText想法。

我发现了另一种(也许仍然更好)覆盖DefaultTreeCellRenderer的方式,并想分享它:

public class JTreeWithToolTips {
    private static class OwnRenderer extends DefaultTreeCellRenderer {
        @Override
        public Component getTreeCellRendererComponent(JTree tree, Object value,
                boolean sel, boolean expanded, boolean leaf, int row,
                boolean hasFocus) {
            setToolTipText("foobar" + row);
            return super.getTreeCellRendererComponent(tree, value, sel,
                    expanded, leaf, row, hasFocus);
        }
    }

    public static void main(String[] args) {
        JTree tree = new JTree(new Object[] { "foo", "bar", "foobar" });
        tree.setCellRenderer(new OwnRenderer());
        ToolTipManager.sharedInstance().registerComponent(tree);

        JFrame frame = new JFrame();
        frame.getContentPane().add(tree);
        frame.pack();
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        frame.setVisible(true);
    }
}

答案 1

请参阅JTree上的getTooltipText。这应该允许您根据将鼠标悬停在树中的内容来显示工具提示。(不过,请阅读文档,您需要使用工具提示管理器注册JTree。


答案 2

是的,你可以使用然后使用一种方法(我不记得名字了),告诉你你在哪个节点上。如果你得到空,显然那么你没有在节点上。onMouseMoved