我一直在检查“caspian.css”被Oracle JavaFX运行库分布,我看到他们已经宣布了一些颜色值的变量。 例如:
-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的场景生成器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参考指南 ”,只提到“查到的颜色”,而不是“变量”的一般概念。 这将是一个很好的功能,但...只是说...
不幸的是,似乎只为颜色工作。 但是,你需要确保你的变量是“看得见”,从使用它的规则:
* {
-fx-base2: #e00;
}
.track {-fx-background-color: -fx-base2;}
我知道这是一个很古老的问题,但我无法找到一个类似的方法矿山任何回答。 正如前面已经回答说,这是不可能的,除了颜色标准的CSS。 (请纠正我,如果我错了)
然而,这是可能的,如果你使用较少 。 我在JavaFX的项目之一,使用更少的和它的作品真的很好。 你只需要配置您的构建过程编译较少文件,并生成实际的CSS文件。 我用行家在我的项目,下面你可以找到我的构建配置。
<build>
<!-- exclude less files from output directory -->
<resources>
<resource>
<directory>src/main/resources</directory>
<excludes>
<exclude>**/*.less</exclude>
</excludes>
</resource>
</resources>
<plugins>
<plugin>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.3</version>
<configuration>
<source>1.8</source>
<target>1.8</target>
</configuration>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-resources-plugin</artifactId>
<version>3.0.2</version>
</plugin>
<plugin>
<groupId>com.zenjava</groupId>
<artifactId>javafx-maven-plugin</artifactId>
<version>8.7.0</version>
<configuration>
<mainClass>com.example.project.Main</mainClass>
</configuration>
</plugin>
<plugin>
<artifactId>maven-assembly-plugin</artifactId>
<configuration>
<archive>
<manifest>
<mainClass>com.example.project.Main</mainClass>
</manifest>
</archive>
<descriptorRefs>
<descriptorRef>jar-with-dependencies</descriptorRef>
</descriptorRefs>
<appendAssemblyId>false</appendAssemblyId>
</configuration>
</plugin>
<!-- maven less plugin which I'm using to compile the less files -->
<plugin>
<groupId>biz.gabrys.maven.plugins</groupId>
<artifactId>lesscss-maven-plugin</artifactId>
<version>1.2.1</version>
<executions>
<execution>
<goals>
<goal>compile</goal>
</goals>
<configuration>
<sourceDirectory>${project.basedir}/src/main/resources/com/example/project</sourceDirectory>
<outputDirectory>${project.build.outputDirectory}/com/example/project</outputDirectory>
</configuration>
</execution>
</executions>
</plugin>
</plugins>
</build>
有了这个配置我现在可以使用更少的和没有问题定义自定义变量。 我在我的项目,所有其他不太文件可以通过进口导入属性使用颜色catalogue.less文件。 也许这个解决方案可帮助任何人。
编辑 :如果有人有兴趣,工作的例子可以找到这里 。
只要稍微修正你的答案:它是用数字,不仅颜色也是可能的。
例如:
*{
-preferred-scroll-bar-thumb-size: 25;
}
.scroll-bar:vertical .thumb {
-fx-pref-width: -preferred-scroll-bar-thumb-size;
}
作品对我来说,和JavaFX,取值为“25”为“25像素”(如果我写了“25像素”,它会失败)。 它不完全变量使用以下/上海社会科学院但它可以帮助不需要比这更多的人。
在插件的grill2010的解决方案 :
我建议在“生成资源”阶段使用SCSS与Maven的建设者(插件)到CSS。 因此,您可以使用任何数字或颜色的任何选择的变量。
我使用的这个场景,并能正常工作:)
PS你不能这样做,直接在当前的OpenJFX版本的CSS文件。
<plugins>
<plugin>
<groupId>com.github.warmuuh</groupId>
<artifactId>libsass-maven-plugin</artifactId>
<version>0.2.10-libsass_3.5.3</version>
<executions>
<execution>
<phase>generate-resources</phase>
<goals>
<goal>compile</goal>
</goals>
</execution>
</executions>
<configuration>
<outputPath>${project.build.directory}/generated-sources/resources</outputPath>
<inputPath>${basedir}/src/main/resources</inputPath>
<!--<includePath>${basedir}/src/sass-plugins/</includePath>-->
<outputStyle>nested</outputStyle>
<generateSourceComments>false</generateSourceComments>
<generateSourceMap>false</generateSourceMap>
<sourceMapOutputPath>${project.build.directory}/generated-sources/resources
</sourceMapOutputPath>
<omitSourceMapingURL>true</omitSourceMapingURL>
<embedSourceMapInCSS>false</embedSourceMapInCSS>
<embedSourceContentsInSourceMap>false</embedSourceContentsInSourceMap>
<precision>5</precision>
<enableClasspathAwareImporter>true</enableClasspathAwareImporter>
<copySourceToOutput>false</copySourceToOutput>
</configuration>
</plugin>
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>build-helper-maven-plugin</artifactId>
<version>3.0.0</version>
<executions>
<execution>
<phase>generate-sources</phase>
<goals>
<goal>add-source</goal>
</goals>
<configuration>
<sources>
<source>${project.build.directory}/generated-sources/resources</source>
</sources>
</configuration>
</execution>
</executions>
</plugin>
</plugins>