JavaFX Tooltip auf ImageView

baxbear

Mitglied
Hi,

ich versuche gerade folgendes zu machen:

Java:
	public void addTargetCard(MissionCard mCard) {
		int card = mCard.GetID();
		leftSide.getChildren().removeAll(targetCardBox);
		Image image = new Image(
				MainApp.class.getResourceAsStream("images/target" + card
						+ ".png"));
		ImageView imageView = new ImageView();
		imageView.setImage(image);
		imageView.setFitHeight(81);
		imageView.setFitWidth(108);
		imageView.setPreserveRatio(true);
		imageView.setPickOnBounds(true);
		Tooltip.install(imageView, new Tooltip(intToCity(mCard.getStart())
				+ " - " + intToCity(mCard.getFinish())));
		targetCardBox.getChildren().add(imageView);
		leftSide.getChildren().add(targetCardBox);
	}

Allerdings scheint es nicht zu funktionieren, zumindest wird mir nie ein Tooltip angezeigt...

kann mir jemand erklären was ich falsch mache und wie ich es richtig mache. Im Prinzip will ich nur erreichen, dass mir bei einem Mouseover über die images ein kurzer Text eingeblendet wird.

Danke im Voraus für die Hilfe!
 
Hm... Ich hab das auch mal gebraucht und ich glaube, das geht tatsächlich nicht. ImageViews scheinen kein passender Container für Tooltips zu sein. Angeblich ist dein Weg der Richtige, hilft dir nur nichts. Versuche mal alternativ diesen Umweg hier - den bin ich mal gegangen, als ich so etwas brauchte:

Java:
Label label = new Label();
label.setContentDisplay(ContentDisplay.GRAPHIC_ONLY);
// label-Text braucht es nicht, da wir den nie anzeigen würden
ImageView iv = ImageResource.getImageView("fugue/tick-circle.png"); // hab ne Hilfsklasse dafür
label.setTooltip(new Tooltip(StringResource.getString("license.deviceStatus.ok", device.getAddress()
	+ (device.getName() != null && !device.getName().isEmpty() ? " '" + device.getName() + "'" : ""), device.getPort())));
label.setGraphic(iv);
// anstelle des ImageViews verwende nun das Label

Ich brauchte mal in einer Liste nur auf dem Graphics Node ein bedingtes Tooltip. Habe dann den obigen Code (mit noch ein paar if-else-Zweigen, die ich aus Gründen der Übersicht weggelassen habe) in einem Binding für den Graphics-Node der Cell-Factory meiner Liste verwendet.
 
Zuletzt bearbeitet:
Scheint immer noch kein Tooltip anzuzeigen. Da ich noch nie mit Tooltips gearbeitet habe, kann es vielleicht sein, dass ich dem Tooltip erst sagen muss, dass es bei einem MouseOver über das Bild erscheinen soll? Bzw. was sind denn die Standard Eigenschaften wenn man nichts ändert bei einem Tooltip?

Java:
	public void addTargetCard(MissionCard mCard) {
		int card = mCard.GetID();
		Label label = new Label();
		label.setContentDisplay(ContentDisplay.GRAPHIC_ONLY);
		leftSide.getChildren().removeAll(targetCardBox);
		Image image = new Image(
				MainApp.class.getResourceAsStream("images/target" + card
						+ ".png"));
		ImageView imageView = new ImageView();
		imageView.setImage(image);
		imageView.setFitHeight(81);
		imageView.setFitWidth(108);
		imageView.setPreserveRatio(true);
		imageView.setPickOnBounds(true);
		label.setGraphic(imageView);
		label.setTooltip(new Tooltip(intToCity(mCard.getStart()) + " - "
				+ intToCity(mCard.getFinish())));
		// Tooltip.install(imageView, new Tooltip(intToCity(mCard.getStart())
		// + " - " + intToCity(mCard.getFinish())));
		targetCardBox.getChildren().add(label);
		leftSide.getChildren().add(targetCardBox);
	}
 
Zuletzt bearbeitet:
Ok, da weiss ich jetzt leider nicht weiter. Bei mir funktioniert dieser Ansatz und dein Code sieht ja auch in Ordnung aus. Hast du mal StackOverflow gefragt? Vielleicht findet sich da was. Sorry, aber mehr kann ich im Moment nicht sagen...
 
Alles klar np^^ vielen Dank

hab mal nen Thread in StackOverFlow erstellt - sollte sich da etwas ergeben werde ich den hier posten.

MfG
ich
 
Ganz simpler Fehler - dadurch, dass ich die targetCards die ganze Zeit update ist einfach nicht genug Zeit einen Tooltip einzublenden - also im Prinzip benötigt es auch kein Workaround es konnte einfach nur der Tooltip nicht angezeigt werden weil die Bilder ständig aktualisiert werden.

Dann vielen Dank trotzdem für die Hilfe.^^
 
Zuletzt bearbeitet:

Zurück
Oben