2011-08-30 47 views
6

我有一個包含JButtons和一些其他東西的JPanel,我希望整個面板都有一個工具提示。當我在JPanel上調用setToolTipText時,工具提示只出現在JPanel中的空白處。如何在JPanel及其子項上設置工具提示?

有沒有辦法在JPanel上設置一個工具提示,使其適用於JPanel及其子項,還是我堅持在所有子項上調用setToolTipText?

+1

很難說了更好的東西... http://stackoverflow.com/questions/7138914/swing-如何創建自定義jtooltip-like-widget-that-move-with-the-mouse/7139057#comment-8561297,但也許我是wong – mKorbel

回答

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); 
} 
+0

在此解決方案中,工具提示閃爍並更改位置時子組件之間的交叉。我已經發布了關於如何將容器視爲單個單元的後續問題:http://stackoverflow.com/q/8592264/411282 –

相關問題