Swing Tooltips auf Graphics

Status
Nicht offen für weitere Antworten.

banshee

Bekanntes Mitglied
Hallo,

ich habe mit Hilfe von Java2D eine Matrix auf ein JPanel gezeichnet und möchte nun für jede Zelle einen Tooltip haben, der mir den von der Matrix repräsentierten Wert anzeigt. Ideal wäre es, wenn er sich von selber aufklappt, nachdem man mit der Maus kurz auf einer Zelle gewartet hat, aber wenn man clicken muss, ist das sicherlich kein Beinbruch.

Idee 1 war, irgendwie die setToolTip() in JComponent zu überschreiben, aber damit definiere ich eben nur einen Tooltip für das ganze Panel. Wäre ja immernoch möglich, wenn ich erkenne, wann ein Tooltip auf einer Zelle angezeigt werden soll und diesen dann einfach für das ganze Panel setze.

Die zweite Idee war sowas in der Art:

Java:
public void mouseClicked(MouseEvent e)
{
  JToolTip tip = new JToolTip();
  tip.setLocation(e.getPoint());
  tip.setTipText("tooling around");
  tip.paint(g);
}

Aber das funktioniert leider nicht. Hat jemand eine Idee?
 
ich habe mit Hilfe von Java2D eine Matrix auf ein JPanel gezeichnet und möchte nun für jede Zelle einen Tooltip haben
Genau genommen ist das Panel ja nur eine Komponente und hat darum auch nur einen Tooltip, dessen Text wir in Abhängigkeit der Mausposition (MouseMotionListener) so setzen können, wie wir ihn gerade brauchen. Einfacher ist es allerdings, wenn wir die Zellen von JComponent ableiten und dann getrennte Tooltips setzen. Diese Zellen werden als Kindkomponenten zum Panel hinzugefügt.
 
Den Ansatz hatte ich schon. Das Problem dabei ist, dass die Matrizen so groß werden können, dass das alles zu langsam wird oder sogar zu einem HeapOverflow kommt, weil zu viele Komponenten gebraucht werden. Das wäre wahrscheinlich auch wieder ein relativ großer Eingriff in die Logik.
Im Prinzip muss ich mich ja nur zwischen die Anzeige des Tooltipps schalten. Gibt es da irgendein event oder ähnliches, was man abfangen kann, sobald der Tooltip gezeigt werden soll?
 
Den Ansatz hatte ich schon. Das Problem dabei ist, dass die Matrizen so groß werden können, dass das alles zu langsam wird oder sogar zu einem HeapOverflow kommt, weil zu viele Komponenten gebraucht werden. Das wäre wahrscheinlich auch wieder ein relativ großer Eingriff in die Logik.
Versuch's mal mit einer JTable.
 
Um nochmal darauf zurückzukommen...

Was bringt mir denn die Methode JComponent.getToolTipText() ? Die fragt doch nur ab, welcher Tooltip gesetzt ist. Ich müsste doch eher setToolTipText() überschreiben. Ich bräuchte anschließend nur noch sowas wie displayToolTip und das scheint es nicht zu geben...
 
Hrrrr, da ist jemand dem Link nicht gefolgt.

Es gibt zwei getToolTipText-Methoden, eine davon darf eine Antwort in Abhängigkeit der Maus-Position geben.
 
Oh entschuldigung, mein Fehler. Ich bin irgendwie davon ausgegangen, dass das ein automatisch erzeugter Link zur Std-Funktion der API war.
 
Status
Nicht offen für weitere Antworten.

Zurück
Oben