如何在JPanel及其子设备上设置工具提示?

时间:2011-08-30 20:15:51

标签: java swing tooltip

我有一个包含JButton和其他一些东西的JPanel,我希望整个面板都有一个工具提示。当我在JPanel上调用setToolTipText时,工具提示只出现在JPanel中的空白区域。

有没有办法在JPanel上设置工具提示,以便它适用于JPanel及其子节点,或者我是否仍然坚持在所有子节点上调用setToolTipText?

1 个答案:

答案 0 :(得分:7)

创建递归方法:

public static void setToolTipRecursively(JComponent c, String text) {

    c.setToolTipText(text);

    for (Component cc : c.getComponents())
        if (cc instanceof JComponent)
            setToolTipRecursively((JComponent) cc, text);
}

完整示例:

public static void main(String[] args) {

    final JFrame frame = new JFrame("Test");

    frame.add(new JLabel("Testing (no tooltip here)"), BorderLayout.NORTH);

    final JPanel panel = new JPanel(new GridLayout(2, 1));
    panel.setBackground(Color.RED);

    panel.add(new JLabel("Hello"));
    panel.add(new JTextField("World!"));

    setToolTipRecursively(panel, "Hello World!");

    frame.add(panel, BorderLayout.CENTER);

    frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    frame.setSize(400, 300);
    frame.setVisible(true);
}