Hi,
ich würde für ein paar meiner Swing-Komponenten gerne ToolTips anbieten. Die von Java bereitgestellten ToolTips möchte ich nicht verwenden, aus 2 Gründen:
1) Die Verzögerung zwischen Fokusierung der Komponente und Einblendung des tips soll == 0 sein, und scheinbar kann man das nicht einstellen
2) Das Aussehen würde ich gerne etwas verändern.
Nun also mein erster Ansatz war, der Komponente einen FocusListener zu verpassen, und ihr mein ToolTip (meine eigene Klasse extends JDialog) geben. bei focusGained wird das Tooltip eingeblendet, bei focusLost wird es disposed.
Problem: Das führt zu einer Endlosschleife, da nach dem Einblenden die Komponente den Fokus verliert, wodurch sie das ToolTip disposed, wodurch sie den Fokus wieder kriegt und das toolTip anzeigt...
die focusLost Methode wollte ich nun anpassen, damit das nicht passiert:
Aber scheinbar ist es gar nicht mein ToolTip, das den Fokus bekommt, weil tip.hasFocus() immer false ergibt. Auch nicht wenn ich bei focusGained schreibe:
Wie löse ich das Problem nun?
Vielen Dank
ich würde für ein paar meiner Swing-Komponenten gerne ToolTips anbieten. Die von Java bereitgestellten ToolTips möchte ich nicht verwenden, aus 2 Gründen:
1) Die Verzögerung zwischen Fokusierung der Komponente und Einblendung des tips soll == 0 sein, und scheinbar kann man das nicht einstellen
2) Das Aussehen würde ich gerne etwas verändern.
Nun also mein erster Ansatz war, der Komponente einen FocusListener zu verpassen, und ihr mein ToolTip (meine eigene Klasse extends JDialog) geben. bei focusGained wird das Tooltip eingeblendet, bei focusLost wird es disposed.
Problem: Das führt zu einer Endlosschleife, da nach dem Einblenden die Komponente den Fokus verliert, wodurch sie das ToolTip disposed, wodurch sie den Fokus wieder kriegt und das toolTip anzeigt...
die focusLost Methode wollte ich nun anpassen, damit das nicht passiert:
Java:
if (!tip.hasFocus()) {
tip.dispose();
}
Aber scheinbar ist es gar nicht mein ToolTip, das den Fokus bekommt, weil tip.hasFocus() immer false ergibt. Auch nicht wenn ich bei focusGained schreibe:
Java:
tip.setVisible(true);
tip.requestFocusInWindow(); // oder requestFocus();
Wie löse ich das Problem nun?
Vielen Dank