2011-08-30 12 views
6

Ho un JPanel contenente JButtons e alcune altre cose, e voglio che l'intero pannello abbia un suggerimento. Quando chiamo setToolTipText su JPanel, il tool-tip appare solo in spazi vuoti all'interno di JPanel.Come posso impostare un suggerimento su un JPanel e sui suoi figli?

C'è un modo per impostare un suggerimento su JPanel in modo tale che si applica a JPanel e ai suoi figli, o sono bloccato con chiamata setToolTipText su tutti i bambini pure?

+1

difficile dire qualcosa di meglio ... http://stackoverflow.com/questions/7138914/swing- how-to-create-a-custom-jtooltip-like-widget-that-moves-with-mouse/7139057 # comment-8561297, ma forse sono wong – mKorbel

risposta

7

Creare un metodo ricorsivo:

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

    c.setToolTipText(text); 

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

completa esempio:

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

In questa soluzione, il suggerimento sfarfallio e cambia posizione quando incrocio tra sottocomponenti. Ho pubblicato una domanda successiva su come è possibile trattare il container come una singola unità: http://stackoverflow.com/q/8592264/411282 –

Problemi correlati