JavaFx - Exemple mode sombre CSS

Le CSS JavaFX pour le mode sombre

.root {
	-fx-background-color: #343a40;
}

.dark-toggle-btn {
	-fx-text-fill: #FFF;
	-fx-background-color: #007bff;
}

Dark mode ToggleButton JavaFX

import javafx.application.Application;
import javafx.beans.value.ObservableValue;
import javafx.scene.Scene;
import javafx.scene.control.ToggleButton;
import javafx.scene.layout.StackPane;
import javafx.stage.Stage;

/**
 * JavaFX App
 */
public class App extends Application {

  private Scene scene;

  public static void main(String[] args) {
    launch();
  }

  @Override
  public void start(Stage stage) {

    // Le bouton switch pour passer du mode sombre au mode clair
    var toggleBtn = new ToggleButton("Mode sombre");
    // La classe de style pour le bouton
    toggleBtn.getStyleClass().add("dark-toggle-btn");
    // Quand le bouton change d'état la fonction est appelée
    toggleBtn.selectedProperty().addListener(this::onSelectChanged);

    var root = new StackPane(toggleBtn);

    scene = new Scene(root, 640, 480);
    stage.setScene(scene);
    stage.show();
  }

  private void onSelectChanged(ObservableValue < ? extends Boolean > obs, Boolean oldValue, Boolean newValue) {
    if (newValue) {
      /*
       * Suppression de toutes les feuilles de style et ajoute la feuille pour le mode
       * sombre
       */
      scene.getStylesheets().clear();
      scene.getStylesheets().add("style-dark.css");
    } else {
      // Suppression des feuilles de style (retour au style "par défaut")
      scene.getStylesheets().clear();
    }
  }

}

Commentaires