我一直在檢查Oracle在JavaFX運行時庫中分發的「caspian.css」,並且我看到他們已經聲明瞭一些顏色值作爲變量。例如:在JavaFX CSS文件中聲明變量
-fx-base: #d0d0d0; // Caspian.css, Line 47
......然後他們用它作爲一些其他財產的價值,如:
-fx-color: -fx-base; // Caspian.css, Line 96
現在,我想要做的就是聲明一個測量單元(-fx-radius-default: 10px
),然後在每次需要設置控件的半徑時使用它,例如:
-fx-border-radius: -fx-radius-default;
-fx-background-radius: -fx-radius-default;
到目前爲止,我一直不成功。我的問題是:這完全可能嗎?
編輯:添加實驗細節
詳細
下面是我對JavaFX的場景Builder創建1.1我Experiment.fxml文件:
<?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>
及以下是css/Experiment.css
我已經使用:
* {
-fx-radius-default: 10px;
}
.track {
-fx-border-radius: -fx-radius-default;
-fx-border-color: black;
}
不幸的是,這並不工作,讓這樣的錯誤消息:
無法解析「-fx半徑默認」,而從規則解決了「-fx邊界半徑」查找'* .track' 在樣式表文件:/home/abdullah/codebase/src/package/css/Experiment.css
如果我使用普通語法(-fx-border-radius: 10px
),有與沒有問題。
我在這裏做錯了什麼?
編輯:結論
結論:沒有可能
看來我要尋找什麼是不可能的JavaFX的當前版本,因爲「JavaFX CSS Reference Guide」只提到「looked-顏色「,而不是」變量「的通用概念。這將是一個很好的功能,雖然......只是說...
我不知道實現起來是否簡單實用,但目前看起來像JavaFX的定義它們自己的CSS屬性的類使用'javafx.css.CssMetaData'類 –