Tôi đã kiểm tra "caspian.css" được phân phối bởi Oracle trong thư viện thời gian chạy JavaFX, và tôi thấy chúng đã khai báo một số giá trị màu làm biến. Ví dụ:Khai báo biến trong tệp JavaFX CSS
-fx-base: #d0d0d0; // Caspian.css, Line 47
... và sau đó họ đã sử dụng nó như là giá trị của một số tài sản khác, như:
-fx-color: -fx-base; // Caspian.css, Line 96
Bây giờ, những gì tôi muốn làm là để khai báo một đơn vị đo lường (-fx-radius-default: 10px
) và sau đó sử dụng nó mọi lúc tôi cần phải đặt bán kính của một điều khiển, ví dụ:
-fx-border-radius: -fx-radius-default;
-fx-background-radius: -fx-radius-default;
Tôi đã không thành công cho đến nay. Câu hỏi của tôi là: Liệu điều này có thể được không?
Edit: Thêm chi tiết thí nghiệm
Chi tiết
Đây là tập tin Experiment.fxml của tôi mà tôi tạo ra trên JavaFX Scene Builder 1.1:
<?xml version="1.0" encoding="UTF-8"?>
<?import java.lang.*?>
<?import java.net.*?>
<?import java.util.*?>
<?import javafx.scene.control.*?>
<?import javafx.scene.layout.*?>
<?import javafx.scene.paint.*?>
<AnchorPane id="AnchorPane" maxHeight="-Infinity" maxWidth="-Infinity" minHeight="-Infinity" minWidth="-Infinity" prefHeight="400.0" prefWidth="600.0" xmlns:fx="http://javafx.com/fxml">
<children>
<TextArea layoutX="200.0" layoutY="119.0" prefWidth="200.0" styleClass="track" wrapText="true" />
</children>
<stylesheets>
<URL value="@css/Experiment.css" />
</stylesheets>
</AnchorPane>
Và dưới đây là css/Experiment.css
mà tôi đã sử dụng:
* {
-fx-radius-default: 10px;
}
.track {
-fx-border-radius: -fx-radius-default;
-fx-border-color: black;
}
Thật không may này không hoạt động, đưa ra một thông báo lỗi như thế này:
Không thể giải quyết '-fx-bán kính mặc định' trong khi giải quyết các tra cứu cho '-fx-border-radius' khỏi ách thống trị '* .track' trong tập tin stylesheet: /home/abdullah/codebase/src/package/css/Experiment.css
Nếu tôi sử dụng cú pháp đơn giản (-fx-border-radius: 10px
), không có vấn đề với điều đó.
Tôi đang làm gì sai ở đây?
Edit: Kết luận
Kết luận: Không thể
Có vẻ như những gì tôi đang tìm kiếm là không thể với phiên bản hiện tại của JavaFX, vì "JavaFX CSS Reference Guide" chỉ đề cập đến "looked- lên màu ", và không phải là khái niệm chung của" biến ". Nó sẽ là một tính năng tốt, mặc dù ... Chỉ cần nói ...
Tôi không biết liệu việc triển khai có dễ dàng hay thực tế hay không, nhưng hiện tại có vẻ như các lớp JavaFX xác định thuộc tính css của riêng họ sử dụng lớp 'javafx.css.CssMetaData' –