2013-05-01 16 views
8

Tôi đang sử dụng JDK8 build 87 và muốn tự động thêm và xóa css stylesheets sao cho chúng có thể được sử dụng bởi toàn bộ ứng dụng JavaFX của tôi.Làm cách nào để tự động thêm và loại bỏ css cho toàn bộ ứng dụng JavaFX?

Hiện nay tôi đang thiết lập mặc định styleSheet sử dụng lệnh này:

Application.setUserAgentStylesheet(Application.STYLESHEET_MODENA); 

và sau đó khi tôi muốn thêm một style sheet css thêm tôi làm điều này:

com.sun.javafx.css.StyleManager.getInstance.addUserAgentStylesheet(styleSheet); 

tác phẩm này nhưng tôi có hai vấn đề. Thứ nhất, nó đang sử dụng riêngAPI và thứ hai dường như không phải là cách để xóa nó khi tôi đã hoàn thành nó (tôi đang sử dụng OSGI vì vậy nó là phổ biến cho các mô-đun đến và đi).

Có nói chuyện về việc chuyển StyleManager để côngAPI vào đầu năm 2012 nhưng tôi không chắc chắn bất cứ điều gì đã xảy ra chuyện đó.

Có ai biết phương pháp công khai để thêm styleSheets sao cho chúng áp dụng cho toàn bộ ứng dụng JavaFX? Ngoài ra làm thế nào sẽ loại bỏ chúng?

(Tôi không có đặc quyền để tạo ra JavaFX-8 mới thẻ)

+1

đã thêm thẻ mới, cảm ơn đề xuất. –

+0

BTW, nếu bạn không tìm được giải pháp phù hợp, bạn có thể tìm kiếm tweak hoặc RFE trên trình gỡ lỗi javafx-jira, và nếu bạn không tìm thấy bất kỳ một tập tin nào - trong khi nó không phải là muộn .. –

Trả lời

3

Theo Global Stylesheet for your GUI application:

// load default global stylesheet 
Application.setUserAgentStylesheet(null); 
// add custom global stylesheet 
StyleManager.getInstance().addUserAgentStylesheet(AQUA_CSS_NAME); 

Tuy nhiên như Boomah chỉ ra, StyleManager.getInstance().addUserAgentStylesheet không phải là một phần của JavaFX API, vì vậy phương pháp này thực sự không được khuyến nghị rằng nó được sử dụng trực tiếp từ mã người dùng. Ngoài ra, nó chỉ hoạt động để thêm biểu định kiểu toàn cầu chứ không phải để loại bỏ biểu định kiểu như vậy khi biểu định kiểu đã được thêm.


Các mạo hiểm hơn có thể tạo ra một bản vá để thêm tính năng gợi ý Boomah bằng cách sửa đổi mã StyleManager để hỗ trợ loại bỏ các stylesheets toàn cầu và thay đổi mã nguồn Application lớp để cung cấp một API công cộng cho các tính năng mới mà làm cho việc sử dụng cập nhật StyleManager, sau đó gửi bản vá đến openjfx-dev để đưa vào nền tảng JavaFX.


Trong thời gian chờ đợi, bạn có thể đặt biểu định kiểu người dùng theo cách thủ công trên mỗi cảnh ứng dụng của bạn - loại đau, nhưng bạn đang ở đó. . .

+0

I rất vui khi đặt bảng kiểu cấp cao nhất thành STYLESHEET_MODENA như được minh họa trong ví dụ trên của tôi. Đó là StyleManager là api riêng và thậm chí không có khả năng loại bỏ các bảng định kiểu bổ sung sau khi chúng được thiết lập. – Boomah

+0

Chính xác, để có được tính năng bạn muốn, bạn sẽ cần phải gửi bản vá để thực hiện tính năng hoặc [tạo yêu cầu tính năng] (https://javafx-jira.kenai.com) – jewelsea

+0

OK, tôi đã nói chuyện với Jonathan Giles về điều này. Ông đề nghị chỉ cần thêm vào tất cả các cảnh là tốt.Nó không phải là một vấn đề lớn như tôi có quyền truy cập vào tất cả, nó chỉ có vẻ như có nên là một cách tốt hơn để làm điều này. Cảm ơn – Boomah

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