JavaFX Button Standard Hintergrundfarbe

Guten Morgen

Ich brauche die Standard Button Hintergrundfarbe um zwischen rot und Standard hin und her zu wechseln.

Da man aber bei einem Button der Hintergrund nur über das Style Atribut ändern kann, bin ich ein wenig überfragt…

Weis jemand wie man das machen könnte?

setze doch statt der Farbe selbst die Style-class des Buttons und definiere die Farben im CSS…

bye
TT

Das wäre die not-Fall Lösung. Da ich im ganzen Programm bis jetzt jedoch das ganze Design Default habe, möchte ich es nicht für einen Button abändern.

Im Prinzip musst du ja nur das, was man im Stylesheet für den Button (bzw. Buttons) machen würde in die setStyle packen.
Ansonten wenn du doch lieber ein Stylesheet machen willst, kannst du auch für den Button eine eigene CSS Class machen und mit setId deinen Button daraufhin anpassen.

Ansonsten findest du ja hier noch was, falls du es noch nicht durchgelesen hast.

Ich habe eine Zwischenlösung gemacht:

Ich speichere mir nach dem Aufstarten der Software den Style via:

btnStoerQuit.getStyle()

Anschliessend kann ich diesen wieder zurückschreiben wen ich keine Farbänderung mehr möchte.

hast du dir diesen String einmal angeschaut? hast du das Zurücksetzen schon getestet?
in meinem kleinen Testprogramm um diesen Tipp anzubringen war der String leer,

anderenfalls müsste da ja die Farbe als Information drinstehen,
oder ist es nicht eher ein Farbverlauf?

.getCssMetaData() liefert eine Menge, aber kompliziert…

Die Default sachen dürften alle vom Stylesheet kommen (Modena bzw. Caspian) und die werden genommen wenn nichts anderweitig gesetzt wurde. Daher könnte das zurücksetzen durchaus funktionieren wenn der String leer ist. Macht ja auch Sinn, da man kein Style gesetzt hat. Im Prinzip ist es ja so, dass zurest der direkt gesetzte Style genommen wird, dann das manuell gesetzte Stylesheet und zuletzt der Default style.

Ich würde für TTs Ansatz stimmen.

Vielleicht ist es etwas unklar was er gemeint hat.

Entscheidend ist hier auch das es eine ObservableList ist, die getStyleClass zurückgibt. Das sollte das aktualisieren triggern.

button.getStyleClass().add("redbutton");

// Zurücksetzen
button.getStyleClass().removeAll("redbutton");```

Im Stylesheet dann entsprechend für die "redbutton" Klasse die Hintergrundfarbe setzen.

[QUOTE=ionutbaiu]Ich würde für TTs Ansatz stimmen.

Vielleicht ist es etwas unklar was er gemeint hat.

Entscheidend ist hier auch das es eine ObservableList ist, die getStyleClass zurückgibt. Das sollte das aktualisieren triggern.

button.getStyleClass().add("redbutton");

// Zurücksetzen
button.getStyleClass().removeAll("redbutton");```

Im Stylesheet dann entsprechend für die "redbutton" Klasse die Hintergrundfarbe setzen.[/QUOTE]

Ah, ich war nicht weit davon entfernt...

Vielen Dank für die Hilfe, über das Stylesheet ist sicher die saubere Lösung.