我有一个包含JButton和其他一些东西的JPanel,我希望整个面板都有一个工具提示。当我在JPanel上调用setToolTipText时,工具提示只出现在JPanel中的空白区域。
有没有办法在JPanel上设置工具提示,以便它适用于JPanel及其子节点,或者我是否仍然坚持在所有子节点上调用setToolTipText?
答案 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);
}