2011-08-30 8 views
6

私はJButtonとその他いくつかのものを含むJPanelを持っています。パネル全体にツールチップが必要です。 JPanelでsetToolTipTextを呼び出すと、ツールチップはJPanelの空のスペースにのみ表示されます。JPanelとその子にツールチップを設定するにはどうすればよいですか?

JPanelとその子に適用されるようにJPanelにツールチップを設定する方法はありますか?それとも、すべての子にもsetToolTipTextを呼び出すことができますか?

+1

... http://stackoverflow.com/questions/7138914/swing-をどのように作成するカスタムjtooltipのようなウィジェット - その - と - マウスを移動する/ 7139057#コメント-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 –

関連する問題