实现JTree工具提示的最佳方法是什么?

Tou*_*uko 18 java swing tooltip jtree

由于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);
    }
}
Run Code Online (Sandbox Code Playgroud)

Zar*_*nen 15

请参阅JTree上的getTooltipText.这应该允许您根据树中悬停的内容显示工具提示.(但是,请阅读文档,您需要使用ToolTipManager注册JTree.)

  • +1表示您需要注册`ToolTipManager`.即使它在文档中,也很容易被遗漏. (4认同)