2011-10-24 31 views
5

Tôi đang cố gắng tìm hiểu JavaFX 2, nhưng tôi đã rất cố gắng để tạo kiểu cho ứng dụng của mình. Tôi đã tìm thấy this document để cố gắng điều khiển tài liệu và thuộc tính css áp dụng cho chúng. Tôi không thể nói nếu nó không đầy đủ, nếu tôi nên sử dụng một số selectors không rõ hoặc hỗ trợ CSS của JavaFX chỉ là không đủ mạnh cho nhu cầu của tôi.Tài liệu tham khảo hay nhất cho các thuộc tính và bộ chọn CSS JavaFX

Dưới đây là một vài ví dụ: (? Là có một selector cho rằng, hoặc có lẽ một tài sản)

  • Làm thế nào tôi có thể thay đổi màu nền cho khu vực phía sau một TabPane mà không tô màu mỗi thành phần con khác
  • Làm cách nào để thay đổi màu của các tab không được chọn?

Trả lời

10

Các bạn đã thử một cái gì đó như thế này?

Điều này sử dụng bộ chọn ID như được hiển thị trong tài liệu "Ứng dụng JavaFX với CSS". Bạn cũng có thể bỏ chọn bộ chọn "#MyTabPane" và áp dụng cho tất cả các TabPane. (Có vẻ như bộ chọn .tab và .tab-content-area không được thảo luận trong hướng dẫn tham khảo. Tôi đã đi tới tệp "caspian.css" chứa trong tệp jfxrt.jar để tìm chúng.)

TabExample. css

#MyTabPane .tab { 
    -fx-background-color: blue; 
} 
#MyTabPane .tab:selected { 
    -fx-background-color: red; 
} 

#MyTabPane .tab-content-area { 
    -fx-background-color: cyan; 
} 

#MyTabPane .tab *.tab-label { 
    -fx-text-fill: white; 
} 

TabPaneEx.java

@Override 
    public void start(Stage primaryStage) { 
     primaryStage.setTitle("Hello World"); 
     StackPane root = new StackPane(); 
     TabPane pane = new TabPane(); 
     pane.setId(("MyTabPane")); 
     Tab tab1 = new Tab("ONE"); 
     Tab tab2 = new Tab("TWO"); 
     Tab tab3 = new Tab("THREE"); 
     pane.getTabs().addAll(tab1,tab2,tab3); 
     Scene scene = new Scene(root, 300, 250); 
     root.getChildren().add(pane); 
     scene.getStylesheets().add(
       this.getClass().getClassLoader().getResource("tabpaneex/TabExample.css").toString()); 
     primaryStage.setScene(scene); 
     primaryStage.show(); 
    } 
+0

Đây chính xác là những gì Tôi đang tìm kiếm (ngoài .tab-header-nền, mà tôi cũng tìm thấy trong caspian.css). Đó là một sự xấu hổ không có một tài liệu tham khảo đầy đủ hơn, nhưng tôi cho rằng sẽ đến với thời gian. –

+0

Câu trả lời hay. Để đơn giản - có cách nào để truy cập các phần của tab từ java.´? Tôi đang suy nghĩ một cái gì đó dọc theo dòng của tabPane.getTabContent.setStyle()? –

5
+0

Cả các tài liệu này dường như có giải pháp cho các vấn đề. Tôi có thể giả sử CSS của JavaFX không đủ mạnh cho nhu cầu của tôi không? Nếu vậy, tôi có cần tạo một làn da tùy chỉnh không? Nếu không có quyền truy cập vào skin ban đầu của Oracle (trong gói com.sun), tôi tưởng tượng rằng sẽ có rất nhiều công việc. –

+0

Tôi không chắc chắn chính xác những gì bạn muốn, nhưng điều này sẽ tương tự. – JimClarke

+1

Lưu ý hướng dẫn trong tài liệu thứ hai để trích xuất tệp CSS mặc định từ Jar JavaFX: 'jar -xf jfxrt.jar com/sun/javafx/scene/control/skin/caspian/caspian.css' – metasim

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