我一直在检查 Oracle 在 JavaFX 运行时库中分发的“caspian.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 Scene 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;
}
不幸的是,这不起作用,给出如下错误消息:
在从样式表文件中的规则“*.track”解析“-fx-border-radius”时无法解析“-fx-radius-default”:/home/abdullah/codebase/src/package/css/Experiment.css
如果我使用纯语法 ( -fx-border-radius: 10px
),那没有问题。
我在这里做错了什么?
编辑:结论
结论:不可能
当前版本的 JavaFX 似乎无法实现我正在寻找的内容,因为“ JavaFX CSS 参考指南”仅提及“查找的颜色”,而不是“变量”的通用概念。不过,这将是一个很好的功能……只是说……