2013-06-25 36 views
6

Tôi nhận thấy rằng khi tôi chạy ứng dụng JavaFX trên JVM 7 và JVM 8, tôi nhận được các giao diện mặc định khác nhau. Làm thế nào tôi có thể đặt da mặc định giống nhau trên mọi JVM?Cách đặt mặc định JavaFX

Trả lời

9

Bạn có thể đặt skin mặc định:

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

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

+0

Đó không phải là một phương pháp JavaFX 8? Điều đó có chạy trên JRE 7 không? – OttPrime

+2

@OttPrime Không có nó sẽ không chạy trên 7, sử dụng 'System.setProperty (" javafx.userAgentStylesheetUrl "," CASPIAN ");' – Jurgen

+0

Ở trên sẽ hoạt động khi khởi chạy ứng dụng như một cái bình, nhưng vì một lý do nào đó sẽ không làm việc khi khởi chạy nó bằng cách sử dụng Java Web Start, bất kỳ ý tưởng nào tại sao? Tôi đã đấu tranh với điều này trong một thời gian, tôi dường như không thể tìm ra lý do cho nó. – skjerdalas

2

Bạn có thể đặt da của riêng mình bằng cách thêm một biểu định kiểu.

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

Rất tiếc, không có bảng định kiểu mặc định. Có thể duyệt trong jfxrt.jar có thể mang lại điều gì đó.

+0

Có bất kỳ giao diện nào khác được tích hợp vào JavaFX mà tôi có thể sử dụng không? –

+0

Không phải là tôi biết, nhưng tôi không có kinh nghiệm với JavaFX cả. –

+0

@OttPrime Biến nó thành câu trả lời; Tôi đã có đủ điểm rồi. –

6

Biểu định kiểu mặc định cho JavaFX 2 là caspian.css. Bạn có thể tìm thấy nó trong jfxrt.jar dưới com.sun.javafx.scene.control.skin.caspian. Điều này đã thay đổi với JavaFX 8 và tôi tin rằng biểu định kiểu mặc định có tên là modena.css. Để có được một bảng định kiểu phổ biến, bạn sẽ phải xác định bản định kiểu của riêng bạn hoặc sao chép một trong các giá trị mặc định vào dự án của bạn.

2

Bạn cũng có thể chạy với -Djavafx.userAgentStylesheetUrl = caspi trên dòng lệnh.

Các vấn đề liên quan