我一直在检查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'类 –