Gibt es in JavaFX eine Möglichkeit, allen Objekten die selbe "setShowDelay"-Zeit zu geben, indem man nur eine Zeile braucht?

2 Antworten

Vom Fragesteller als hilfreich ausgezeichnet

Du kannst eine Methode machen, wo du die Objekte als Array übergibst und dann mit einer for Schleife darüber läufst. Wäre mehr als eine Zeile, würdest dir aber einige Zeichen sparen


verreisterNutzer  30.04.2022, 19:28

Wie soll sowas aussehen?

for-Schleife ist klar, aber wie kann ich den Objekten nacheinander etwas hinzufügen? Klar, arrayListXY.add(), aber das sieht nicht nach einer Lösung aus.

0
regex9  30.04.2022, 20:17
@verreisterNutzer
public Tooltip[] tooltips = new Tooltip[5];

// ...
for (int i = 0; i < tooltips.length; ++i) {
  tooltips[i] = new Tooltip();
  tooltips[i].setShowDelay(Duration.millis(SHOW_DELAY));
}
1
regex9  01.05.2022, 11:11
@verreisterNutzer

Dein Code im Pastebin unterscheidet sich erheblich von dem in deiner Fragestellung. 🤨 Angedacht war, dass du die Komponenten nur in dem Array speicherst und nicht noch einmal einzeln irgendwo anders.

Außerdem sind diese Zeilen:

showDurationTT[0] = c.a;
showDurationTT[1] = c.b;

// ...

hideDelayTT[0] = c.a;
hideDelayTT[1] = c.b;

redundant, da du die Arrayelemente in der Schleife wieder überschreibst.

Die unterschiedlichen Schleifen lassen sich zudem zusammenfassen. Folgend gehe ich davon aus, dass die Felder a und b jeweils schon auf existente Tooltip-Objekte zeigen.

Tooltip[] tooltips = new Tooltip[] { c.a, c.b };

for (Tooltip tooltip : tooltips) {
  tooltip.setShowDelay(Duration.millis(TT_SHOW_DELAY));
  tooltip.setShowDuration(Duration.millis(TT_SHOW_DURATION));
  tooltip.setHideDelay(Duration.millis(TT_HIDE_DELAY));
}

Alternativ zur Schleife (vor allem, wenn es sich nicht um mehr als vier Tooltip-Objekte handelt) könnte man den Schleifenkörper auch in eine extra Funktion verfrachten und das Tooltip-Objekt als Parameter überreichen. Die Funktion ruft man anschließend je Objekt einmal auf. 

1
verreisterNutzer  01.05.2022, 11:25
@regex9

Okay, ich wusste nicht, dass man hinter (bspw.) Tooltip[] tooltips = new Tooltip[] in "{}" alle Variablen eintragen kann :) Danke!

0