2017-06-07 5 views
2

Ich möchte eine Stilklasse mit Java-Code (nicht in einer Stylesheet-Datei) erstellen und sie zu einem javafx-Knoten hinzufügen.Wie man eine Stilklasse dynamisch in javafx erstellt und hinzufügt

+0

Für das Protokoll: Ich weiß um die setStyle Methode, aber in diesem Fall kann ich es nicht verwenden. – user2858883

+0

Warum können Sie es nicht benutzen? – MeGoodGuy

+0

sieh dir das an: https://stackoverflow.com/questions/16236641/dynamically-add-css-stylesheets-in-javafx – MeGoodGuy

Antwort

1

nicht sicher, ob dies ist, was Sie suchen ...

Button node = new Button(); 
node.getStyleClass().add("my-new-style-class"); 

.my-new-style-class { 
    -fx-padding: 5; 
} 
+0

Nein, ich möchte eine Stilklasse im Code definieren, keine CSS-Datei. – user2858883

0

Die Idee ist, eine temporäre stlyesheet-Datei zu erstellen, schreiben Sie die neue Stil-Klasse in dem Style-Sheet zur Liste hinzufügen der Blätter des Knotens und fügen Sie auch die neue Stilklasse hinzu.

Hier ist ein funktionierendes Beispiel:

Button button = new Button("My Text"); 

button.setOnAction(e -> { 

    try { 
     // Create a new tempfile that will be removed as the application exits 
     File tempStyleClass = File.createTempFile("AppXY_TempStyleClass", ".css"); 
     tempStyleClass.deleteOnExit(); 

     // Write the stlye-class inside 
     try (PrintWriter printWriter = new PrintWriter(tempStyleClass)) { 
      printWriter.println(".temp-style { -fx-text-fill: red; }"); 
     } 

     // Add the style-sheet and the style-class to the node 
     button.getStylesheets().add(tempStyleClass.toURI().toString()); 
     button.getStyleClass().add("temp-style"); 

    } catch (IOException e1) { 
     e1.printStackTrace(); 
    } 
}); 
Verwandte Themen