2013-06-25 3 views
6

Ich bemerkte, dass wenn ich JavaFX-Anwendung auf JVM 7 und JVM 8 ausführen, bekomme ich verschiedene Standard-Skins. Wie kann ich festlegen, dass die Standard-Skin auf jeder JVM identisch ist?Wie setze ich JavaFX Standard Skin

Antwort

9

können Sie die Standard-Skin fest:

@Override 
public void start(Stage stage) throws Exception { 
    .... 
    setUserAgentStylesheet(STYLESHEET_CASPIAN); 
    .... 
} 

http://fxexperience.com/2013/01/modena-new-theme-for-javafx-8/

+0

Ist das nicht eine JavaFX 8-Methode? Wird das auf JRE 7 laufen? – OttPrime

+2

@OttPrime Nein, es wird nicht auf 7 laufen, verwenden Sie 'System.setProperty (" javafx.userAgentStylesheetUrl "," CASPIAN ");' – Jurgen

+0

Das obige funktioniert, wenn Sie die Anwendung als ein Glas starten, aber aus irgendeinem Grund nicht Arbeit beim Start mit Java Web Start, keine Idee warum? Ich kämpfe seit einiger Zeit damit, ich finde keinen Grund dafür. – skjerdalas

2

Sie können Ihre eigene Skin festlegen, indem Sie ein Stylesheet hinzufügen.

scene.getStylesheets().add(
    getClass().getResource("my-skin.css").toExternalForm()); 

Leider gibt es kein Standard-Stylesheet. Vielleicht könnte das Durchsuchen von jfxrt.jar etwas ergeben.

+0

Gibt es noch andere Skins, die ich in JavaFX einbauen kann? –

+0

Nicht das ich weiß, aber ich bin überhaupt nicht so erfahren mit JavaFX. –

+0

@OttPrime Machen Sie es zu einer Antwort; Ich habe bereits genügend Punkte. –

6

Das Standard-Stylesheet für JavaFX 2 ist caspian.css. Sie finden es in jfxrt.jar unter com.sun.javafx.scene.control.skin.caspian. Dies änderte sich mit JavaFX 8 und ich glaube, das Standard-Stylesheet heißt modena.css. Um ein gemeinsames Stylesheet zu erhalten, müssen Sie entweder ein eigenes Stylesheet definieren oder einen der Standardeinstellungen in Ihr Projekt kopieren.

2

Sie auch mit -Djavafx.userAgentStylesheetUrl = caspian auf der Kommandozeile ausgeführt werden können.