# Hilfetext anzeigen beim Überfahren mit der Maus



## engel384 (24. Apr 2009)

Hallo Leute,

es gibt hier sicherlich mehrere Beiträge dazu, jedoch hab ich keine Ahnung, wie ich danach suchen könnte... Es geht mir hier nicht um einen Tooltip, sondern um eine einfache Möglichkeit, einen passenden Hilfetext für jedes Eingabefeld, jeden Button, usw. in EINER Textarea am unteren Rand meiner Oberfläche anzuzeigen. Natürlich könnte ich jetzt bei jeder Komponente einen Action-Listener auf ein MouseHover-Event anfertigen, aber das ist mir zu unschön und aufwändig. Ich dachte eher daran, ob es irgendwie geht, einen Tooltip "abzufangen" und der Text, der da normalerweise angezeigt werden würde, in meine TextArea zu schreiben? Das wäre für mich die schönste Möglichkeit, aber vielleicht gibt es da auch etwas anderes. Kann mir jemand erklären, wie ich da vorgehen muss?

Danke schon mal im Vorraus


----------



## SlaterB (24. Apr 2009)

der Tooltip kommt doch auch nicht von selbst, den musst du genauso überall setzen,
falls es dir nur um den Aufwand geht, '1 Zeile Tooltip' vs '10 Zeilen ActionListener',
dann mache aus '10 Zeilen ActionListener' auch nur '1 Zeile ActionListener',

z.B. indem du neue Basisklassen für alle benötigten Komponenten verwendest, setToolTip überschreibst und dabei dann den ActionListener anlegst


----------



## Ebenius (24. Apr 2009)

So geht's ganz hübsch, finde ich: 
	
	
	
	





```
final JPanel centerPanel = new JPanel(new GridLayout(4, 4, 6, 6));
for (int i = 0; i < 4 * 4; i++) {
  final JButton button = new JButton("" + (i + 1));
  button.setToolTipText("Button Nummer " + (i + 1));
  centerPanel.add(button);
}

final JPanel contentPane = new JPanel(new BorderLayout(6, 6));
contentPane.add(centerPanel);

final JLabel label = new JLabel("Status");
label.setBorder(new SoftBevelBorder(BevelBorder.LOWERED));
label.setPreferredSize(label.getPreferredSize());
contentPane.add(label, BorderLayout.SOUTH);

ToolTipManager.sharedInstance().setEnabled(false);

Toolkit.getDefaultToolkit().addAWTEventListener(new AWTEventListener() {

  private Component hoverComponent;

  public void eventDispatched(AWTEvent event) {
    final Component comp = (Component) event.getSource();
    switch (event.getID()) {
    case MouseEvent.MOUSE_ENTERED:
      hoverComponent = comp;
      final String tt =
            comp instanceof JComponent ? ((JComponent) comp)
                  .getToolTipText() : null;
      label.setText(tt == null ? "" : tt);
      break;
    case MouseEvent.MOUSE_EXITED:
      if (hoverComponent == comp) {
        hoverComponent = null;
        label.setText("");
      }
      break;
    }
  }
}, AWTEvent.MOUSE_EVENT_MASK);

final JFrame f = new JFrame("Tooltip Fun");
f.setContentPane(contentPane);
f.pack();
f.setLocationRelativeTo(null);
f.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
f.setVisible(true);
```
Ebenius


----------



## engel384 (24. Apr 2009)

Wow geniaaal!!! oO Danke, das ist perfekt so


----------

