Ghi đè css là gì?
Chủ đề này mô tả cách sử dụng biểu định kiểu xếp tầng (CSS) với các ứng dụng JavaFX. Sử dụng CSS để tạo giao diện tùy chỉnh cho ứng dụng của bạn Show Biểu định kiểu chứa các định nghĩa kiểu kiểm soát giao diện của các phần tử giao diện người dùng. Sử dụng CSS trong các ứng dụng JavaFX tương tự như sử dụng CSS trong HTML. JavaFX CSS dựa trên W3C CSS phiên bản 2. 1 (có sẵn tại Scene scene = new Scene(new Group(), 500, 400); scene.getStylesheets().add("path/stylesheet.css");6) với một số bổ sung từ công việc hiện tại trên phiên bản 3 của đặc tả và một số tiện ích mở rộng hỗ trợ các tính năng JavaFX cụ thể Giao diện người dùng của bạn bằng JavaFX CSS cho phép bạn thay đổi giao diện người dùng được hiển thị trong Hình 1 thành giao diện người dùng được hiển thị trong Hình 2 chỉ bằng cách thay đổi biểu định kiểu được sử dụng Biểu định kiểu mặc địnhBiểu định kiểu mặc định cho các ứng dụng JavaFX là caspian. css, được tìm thấy trong tệp JAR thời gian chạy JavaFX, jfxrt. cái lọ. Biểu định kiểu này xác định kiểu cho nút gốc và điều khiển giao diện người dùng. Để xem tệp này, hãy chuyển đến thư mục \jre\lib trong thư mục cài đặt Bộ công cụ phát triển Java (JDK). Sử dụng lệnh sau để trích xuất biểu định kiểu từ tệp JAR jar xf jfxrt.jar com/sun/javafx/scene/control/skin/caspian/caspian.css Hình 3 cho thấy giao diện người dùng mẫu trông như thế nào với biểu định kiểu mặc định Tạo biểu định kiểuBạn có thể tạo một hoặc nhiều biểu định kiểu của riêng mình để ghi đè các kiểu trong biểu định kiểu mặc định và để thêm các kiểu của riêng bạn. Thông thường các biểu định kiểu mà bạn tạo có phần mở rộng là Scene scene = new Scene(new Group(), 500, 400); scene.getStylesheets().add("path/stylesheet.css");7 và được đặt trong cùng thư mục với lớp chính cho ứng dụng JavaFX của bạn Bảng định kiểu controlStyle1. css cung cấp giao diện như trong Hình 1. Bảng định kiểu controlStyle2. css cung cấp giao diện như trong Hình 2 Các biểu định kiểu được áp dụng cho các đối tượng Scene scene = new Scene(new Group(), 500, 400); scene.getStylesheets().add("path/stylesheet.css");8 như trong Ví dụ 1, trong đó đường dẫn là cấu trúc thư mục phản ánh vị trí của biểu định kiểu của bạn và biểu định kiểu là tên của biểu định kiểu của bạn. Ví dụ: đường dẫn và tên của biểu định kiểu cho Hình 2 là uicontrolcss/controlStyle2. css Ví dụ 1 Thêm một Style Sheet Scene scene = new Scene(new Group(), 500, 400); scene.getStylesheets().add("path/stylesheet.css"); Xác định kiểuĐịnh nghĩa kiểu bao gồm tên của kiểu, còn được gọi là bộ chọn và một loạt các quy tắc đặt thuộc tính cho kiểu. Các quy tắc cho một định nghĩa được đặt trong dấu ngoặc nhọn ({}). Ví dụ 2 hiển thị định nghĩa cho một phong cách có tên là Scene scene = new Scene(new Group(), 500, 400); scene.getStylesheets().add("path/stylesheet.css");9 Ví dụ 2 Định nghĩa kiểu mẫu .custom-button { -fx-font: 16px "Serif"; -fx-padding: 10; -fx-background-color: #CCFF99; } Ghi chú Kích thước của phông chữ có thể được chỉ định theo điểm (pt) hoặc pixel (px). Độ phân giải 96 điểm trên mỗi inch (dpi) được giả định, vì vậy 1px = 0. 75 điểm Bộ chọnMột số loại phong cách có thể được xác định. Mỗi loại kiểu có quy ước riêng cho bộ chọn Các lớp kiểu tương ứng với tên lớp. Theo quy ước, các tên lớp kiểu bao gồm nhiều hơn một từ sử dụng dấu gạch nối (-) giữa các từ. Bộ chọn lớp kiểu có trước dấu chấm (. ) Ví dụ về bộ chọn lớp .button .check-box .scroll-bar Bạn cũng có thể xác định các kiểu được liên kết với một nút thông qua ID của nút. ID được đặt bằng phương pháp .custom-button { -fx-font: 16px "Serif"; -fx-padding: 10; -fx-background-color: #CCFF99; }0 của nút. Tên kiểu là ID đứng trước ký hiệu băm (#). Ví dụ: một nút có ID .custom-button { -fx-font: 16px "Serif"; -fx-padding: 10; -fx-background-color: #CCFF99; }1 được tạo giao diện theo kiểu .custom-button { -fx-font: 16px "Serif"; -fx-padding: 10; -fx-background-color: #CCFF99; }2 Ví dụ về bộ chọn kiểu ID jar xf jfxrt.jar com/sun/javafx/scene/control/skin/caspian/caspian.css1 Bộ chọn hợp chất cũng có thể. Một số lớp bao gồm các phần tử có thể có định nghĩa kiểu riêng của chúng, được gọi là lớp con cháu. Ví dụ: nhiều điều khiển giao diện người dùng có lớp hậu duệ cho nhãn. Các định nghĩa này được xác định bởi bộ chọn cho lớp và bộ chọn cho lớp con cháu được phân tách bằng dấu cách Ví dụ về bộ chọn cho các lớp hậu duệ jar xf jfxrt.jar com/sun/javafx/scene/control/skin/caspian/caspian.css2 Các lớp giả cho phép bạn tùy chỉnh các trạng thái của một nút, chẳng hạn như khi một nút có tiêu điểm. Các định nghĩa này được xác định bởi bộ chọn cho lớp và tên cho trạng thái được phân tách bằng dấu hai chấm (. ) Ví dụ về bộ chọn cho lớp giả jar xf jfxrt.jar com/sun/javafx/scene/control/skin/caspian/caspian.css3 Quy tắc và Thuộc tínhCác quy tắc cho định nghĩa kiểu gán giá trị cho các thuộc tính được liên kết với lớp. Tên thuộc tính quy tắc tương ứng với tên của thuộc tính cho một lớp. Quy ước cho tên thuộc tính có nhiều từ là tách các từ bằng dấu gạch nối (-). Tên thuộc tính cho các kiểu trong biểu định kiểu JavaFX được đặt trước bởi .custom-button { -fx-font: 16px "Serif"; -fx-padding: 10; -fx-background-color: #CCFF99; }3. Tên thuộc tính và giá trị được phân tách bằng dấu hai chấm (. ). Các quy tắc được kết thúc bằng dấu chấm phẩy (;) Ví dụ về các quy tắc jar xf jfxrt.jar com/sun/javafx/scene/control/skin/caspian/caspian.css5 Lớp kiểu .custom-button { -fx-font: 16px "Serif"; -fx-padding: 10; -fx-background-color: #CCFF99; }4 được áp dụng cho nút gốc của thể hiện Scene scene = new Scene(new Group(), 500, 400); scene.getStylesheets().add("path/stylesheet.css");8. Bởi vì tất cả các nút trong đồ thị cảnh là hậu duệ của nút gốc, các kiểu trong lớp kiểu .custom-button { -fx-font: 16px "Serif"; -fx-padding: 10; -fx-background-color: #CCFF99; }4 có thể được áp dụng cho bất kỳ nút nào Lớp kiểu .custom-button { -fx-font: 16px "Serif"; -fx-padding: 10; -fx-background-color: #CCFF99; }4 bao gồm các thuộc tính có thể được sử dụng bởi các kiểu khác để cung cấp tính nhất quán trong giao diện người dùng. Ví dụ: thuộc tính .custom-button { -fx-font: 16px "Serif"; -fx-padding: 10; -fx-background-color: #CCFF99; }8 được xác định theo kiểu .custom-button { -fx-font: 16px "Serif"; -fx-padding: 10; -fx-background-color: #CCFF99; }4. Thuộc tính này được sử dụng bởi các kiểu cho các điều khiển giao diện người dùng khác làm màu cho điều khiển khi nó có tiêu điểm. Định nghĩa sau đây cho thấy cách thuộc tính này được sử dụng trong kiểu cho lớp .button .check-box .scroll-bar0 Scene scene = new Scene(new Group(), 500, 400); scene.getStylesheets().add("path/stylesheet.css");3 lột da cảnhBạn có thể nhanh chóng thay đổi giao diện UI của mình chỉ bằng cách tùy chỉnh lớp kiểu .custom-button { -fx-font: 16px "Serif"; -fx-padding: 10; -fx-background-color: #CCFF99; }4. Cả hai biểu định kiểu mẫu đều đặt kích thước và họ phông chữ, màu cơ bản mà các màu khác được lấy từ đó và màu nền của cảnh. Ví dụ 3 hiển thị kiểu .custom-button { -fx-font: 16px "Serif"; -fx-padding: 10; -fx-background-color: #CCFF99; }4 từ controlStyle2. css Ví dụ 3 Kiểu gốc từ controlStyle2. css Scene scene = new Scene(new Group(), 500, 400); scene.getStylesheets().add("path/stylesheet.css");6 Chỉ với phong cách này, bạn tạo giao diện cơ bản của Hình 2. Điều này có thể thực hiện được vì các điều khiển giao diện người dùng tích hợp sử dụng các thuộc tính được đặt cho nút gốc để lấy màu và phông chữ của riêng chúng Kiểm soát lột daBạn có thể tùy chỉnh thêm giao diện người dùng của mình bằng cách xác định kiểu cho các điều khiển khác nhau mà bạn đang sử dụng. Bạn có thể ghi đè các định nghĩa trong biểu định kiểu mặc định hoặc tạo kiểu lớp hoặc ID mới. Bạn cũng có thể xác định kiểu cho một nút trong mã của mình Ghi đè kiểu mặc địnhBạn có thể ghi đè một kiểu trong biểu định kiểu mặc định bằng cách đưa kiểu đó vào biểu định kiểu của bạn và gán cho nó các thuộc tính khác nhau. Ví dụ 4 hiển thị kiểu cho lớp .button .check-box .scroll-bar3 từ controlStyle2. css Ví dụ 4 Ghi đè một Kiểu Scene scene = new Scene(new Group(), 500, 400); scene.getStylesheets().add("path/stylesheet.css");0 Màu phông chữ, màu đường viền, bán kính đường viền và phần đệm được chọn từ định nghĩa này. Màu của nút và kiểu phông chữ của nhãn được chọn từ định nghĩa .custom-button { -fx-font: 16px "Serif"; -fx-padding: 10; -fx-background-color: #CCFF99; }4 từ Ví dụ 3. Các nút có kiểu dáng này trông giống như trong hình sau Mô tả về hình minh họa button_style2. png Ghi chú Nếu một lớp không có kiểu được xác định trong caspian. css, hãy xác định kiểu trong biểu định kiểu của bạn và gán nó cho từng thể hiện của lớp như trong Ví dụ 6. Ví dụ: các ngăn bố cục không có các kiểu được xác định trong caspian. biểu định kiểu css. Xem Bảng bố cục tạo kiểu bằng CSS để biết thông tin về cách tạo kiểu cho các lớp như .button .check-box .scroll-bar5 và .button .check-box .scroll-bar6 Tạo kiểu lớpBạn có thể tạo một kiểu lớp bằng cách thêm một định nghĩa cho nó vào biểu định kiểu của bạn. Ví dụ 5 định nghĩa một kiểu mới trong controlStyle1. css được gọi là .button .check-box .scroll-bar7 Ví dụ 5 Xác định một Style mới Scene scene = new Scene(new Group(), 500, 400); scene.getStylesheets().add("path/stylesheet.css");1 Bất kỳ nút nào mà kiểu này được thêm vào sẽ trông giống như trong hình sau. Lưu ý rằng phông chữ của nhãn được chọn từ định nghĩa .custom-button { -fx-font: 16px "Serif"; -fx-padding: 10; -fx-background-color: #CCFF99; }4 trong controlStyle1. css Mô tả về nút minh họa_style1. png Để gán kiểu lớp này cho một nút, hãy sử dụng chuỗi phương thức .button .check-box .scroll-bar9. Ví dụ 6 hiển thị kiểu .button .check-box .scroll-bar7 được gán cho nút Chấp nhận Ví dụ 6 Chỉ định một kiểu lớp Scene scene = new Scene(new Group(), 500, 400); scene.getStylesheets().add("path/stylesheet.css");2 Xin lưu ý rằng việc thêm kiểu vào nút là tích lũy. Sau khi thêm lớp kiểu dáng .button .check-box .scroll-bar7 vào nút jar xf jfxrt.jar com/sun/javafx/scene/control/skin/caspian/caspian.css12, nút được hiển thị bằng cách sử dụng các quy tắc từ cả kiểu dáng jar xf jfxrt.jar com/sun/javafx/scene/control/skin/caspian/caspian.css13 và .button .check-box .scroll-bar7 Tạo kiểu IDBạn có thể xác định kiểu cho một nút riêng lẻ bằng cách tạo kiểu và gán kiểu cho nút đó. Tên kiểu là ID đứng trước ký hiệu băm (#). Ví dụ 7 tạo định nghĩa cho một kiểu tên là jar xf jfxrt.jar com/sun/javafx/scene/control/skin/caspian/caspian.css15 Ví dụ 7 Xác định kiểu ID Scene scene = new Scene(new Group(), 500, 400); scene.getStylesheets().add("path/stylesheet.css");3 Nút được gán ID jar xf jfxrt.jar com/sun/javafx/scene/control/skin/caspian/caspian.css16 trông giống như trong hình dưới đây Mô tả về hình minh họa button_style_id. png Ví dụ 8 chỉ ra cách gán kiểu ID cho một nút Ví dụ 8 Gán kiểu ID Scene scene = new Scene(new Group(), 500, 400); scene.getStylesheets().add("path/stylesheet.css");4 Đặt kiểu trong mãBạn cũng có tùy chọn đặt thuộc tính kiểu cho một nút trong mã cho ứng dụng của mình. Các quy tắc được đặt trong mã được ưu tiên hơn các kiểu từ biểu định kiểu. Ví dụ 9 hướng dẫn cách thay đổi màu nền, màu chữ cho nút bấm |