JavaFX Tooltip Verzögerung beim ersten Anzeigen

jimb0p

Mitglied
Hallo Zusammen,

ich habe ein kleines Performance Problem. Ich habe einen TableView wo ich Produktbilder in einem Tooltip ausgebe wenn man über die Zellen in einer bestimmten Spalte geht. Das funktioniert auch jedoch ist das erste laden des Tooltips immer sehr langsam (knapp 2 Sekunden) wenn das erledigt ist ist der wechsel zur nächsten Zelle nicht merkbar. Gehe ich dann jedoch wieder raus aus der Spalte und warte einen kleinen Moment und versuche es erneut, lädt es wieder so lange. Woran kann das liegen? Hier ist ein kleiner Schnipsel, falls Ihr alles benötigt sagt Bescheid:

Java:
public void showTooltipPreview(TableCell<Artikel, String> tmpHanCell){
		final Tooltip tooltip = new Tooltip();
		TableRow<?> tmpRow = tmpHanCell.getTableRow();
		Artikel tmpArtikel = (Artikel) tmpRow.getItem();
		Long kArtikel = tmpArtikel.kArtikelProperty().get();
//		byte[] tmp = db.getFirstImageToPk(kArtikel);
		byte[] tmp = null;
		try {
			tmp = extractBytes("test.jpg");
		} catch (IOException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		
		if(tmp != null){
			ImageView tmpImgView = new ImageView(convertToJavaFXImage(tmp, 266, 146));
			tmpImgView.setFitWidth(266);
			tmpImgView.setFitHeight(146);
			//tmpImgView.setSmooth(true);
			//tmpImgView.setCache(true);
			tooltip.setGraphic(tmpImgView);
		}else{
			tooltip.setText("Keine Vorschau");
		}
		tmpHanCell.setTooltip(tooltip);
	}

Danke & Gruß!
 
Zuletzt bearbeitet:
Mach mal verschiedene Bilder für die Zeilen/Zellen rein, dann vermute ich, daß es dann auch merkbar ist.

Du könntest die Preview-Bilder beim Laden der Tabelle temporär ablegen und im Tooltip dann direkt das Bild anzeigen. So wie du es machst, mußt du ja immer erst ein Bild convertieren, bevor du es anzeigst. Das kostet sicher einige Zeit.
 
Hi Tom299,

danke für deine Antwort. Ich hatte es ebereits mit unterschiedlichen Bildern, da die im Livesystem aus der Datenbank kommen. Jedoch ist weder die Konvertierung noch das Laden aus der Datenbank ein Problem, da es beim schnellen Wechsel zwischen den Zellen klappt. Es geht wirklich nur um das initiale Aufrufen des Tooltips. Da ist aus irgend einem Grund eine Verzögerung drin.
 
Ich hatte mit dem Tooltip das Phänomen, wenn ich ihn über FXML erstellt habe, daß jeder Aufruf den Tooltip immer verkleinert hat, bis er nicht mehr zu erkennen war. Wenn ich den Tooltip über den Code setze, funktioniert es dagegen wie erwartet.

Aber gut, wenn du einen Workaround gefunden hast 🙂
 

Zurück
Oben