SWT Tooltip soll nicht verschwinden, solange User mit Maus auf Control ist

Ahuga

Aktives Mitglied
Hallo zusammen

Solange der User mit der Maus auf einem Control verweilt, soll der Tooltip sichtbar bleiben. Der Standard-Tooltip
Java:
control.setToolTipText("text");
verschwindet jedoch nach einiger Zeit.

Nun habe ich einen eigenen Tooltip gemacht welcher auch schön stehen bleibt:
Java:
DefaultToolTip toolTipp = new DefaultToolTip(control);
toolTipp.setHideDelay(0);
toolTipp.setText(message);

Nun habe ich jedoch das Problem, dass wenn ich die Maus auf dem Control bewege, der Tooltip verschwindet und eine neuer Tooltip aufgeht.

Wie kann ich machen, dass das Control nach dem MouseEnter-Event taub wird und nach dem MouseExit-Event wieder erwacht, und der Tooltip soll natürlich auch erscheinen.

Oder müsste ich da einen ganz anderen Weg gehen?

Vielen Dank für Tipps.
 
Eigentlich ist es ganz simpel.

Ich habe ein Label
Java:
			final Label labelEdit = new Label(composite, SWT.NONE);			
			labelEdit.setImage(GRAPHIK_BUTTON_INFOS);
			addDefaultToolTip(labelEdit, "Mein Tooltip text");

un in einer Methode setze ich den Tooltipp.
Java:
	private void addDefaultToolTip(Control control, String message) {
		toolTipp = new DefaultToolTip(control);
		toolTipp.setHideDelay(0);
		toolTipp.setText(message);
		Point point = new Point(control.getLocation().x + 3, control.getLocation().y + 10);
		toolTipp.setShift(point);
	}

Mit toolTipp.setHideDelay(0); kann ich definieren, dass der Tooltipp nicht verschwindet.

Wenn ich aber die Mouse bewege, dann findet ein Event statt, welcher den aktuelle Tooltipp schliesst und einen neuen öffnet.
 
Eigentlich ist es ganz simpel.

Ich habe ein Label
Java:
			final Label labelEdit = new Label(composite, SWT.NONE);			
			labelEdit.setImage(GRAPHIK_BUTTON_INFOS);
			addDefaultToolTip(labelEdit, "Mein Tooltip text");

un in einer Methode setze ich den Tooltipp.
Java:
	private void addDefaultToolTip(Control control, String message) {
		toolTipp = new DefaultToolTip(control);
		toolTipp.setHideDelay(0);
		toolTipp.setText(message);
		Point point = new Point(control.getLocation().x + 3, control.getLocation().y + 10);
		toolTipp.setShift(point);
	}

Mit toolTipp.setHideDelay(0); kann ich definieren, dass der Tooltipp nicht verschwindet.

Wenn ich aber die Mouse bewege, dann findet ein Event statt, welcher den aktuelle Tooltipp schliesst und einen neuen öffnet.
ääh, was denn für einen Neuen ???:L Einen leereen ???:L

Gruß
Klaus
 
Auf dem Control wird erneut der Tooltip aufgerufen/generiert/angezeigt, mit immer dem gleichen Tooltip-Text.

- Ich bewege die Maus auf das Conrol-Element und halte sie dann still
- Der Tooltip erscheint
- sobald ich die Maus auf dem Control bewege verschwindt der Tooltipp
- und erscheint dann erneut (wenn ich noch innerhalb des Controls bin)

Anstatt neu zu erschweinnen sollte er stehen bleiben, solange ich mit der Maus über dem Control bin, egal, ob ich die Maus innerhalb des Controls bewege oder nicht.

Ich denke, dass es daran liegt, dass ein Event stattfindet, der die erneute Anzeige des Tooltipps auslöst. Das möchte ich verhindern, solange ich über dem Control bin.
 
Wenn Du Dir den Quelltext von DefaultTooltip und Tooltip anschaust (hier: Java > Open Source Codes > org > eclipse > jface > window > DefaultToolTip _ Java API By Example, From Geeks To Geeks.), siehst Du, dass man bei der Erzeugung über das style-Attribut des Constructors was machen kann. Falls das nichts bringt, schau Dir mal die activate- und deactivate Methoden an. Dort werden die Events gesetzt, auf die das ownende Control reagieren soll. Du könntest in einer eigenen Unterklasse die Methoden überschreiben und das MouseMove-Event weglassen. Sieht nach ein bischen Fummelkram aus. Sollte aber zu schaffen sein.
 

Zurück
Oben