【发布时间】:2013-12-02 20:00:06
【问题描述】:
我发现这个帖子http://docs.oracle.com/javafx/2/deployment/packaging.htm#BABCACBD
您能告诉我如何使用此工具将 css 文件转换为 bss 文件吗?从网站上的信息来看,我不太清楚如何将它用于 JavaFX 应用程序。
任何帮助将不胜感激。
【问题讨论】:
标签: css javafx-2 javafx javafx-8
我发现这个帖子http://docs.oracle.com/javafx/2/deployment/packaging.htm#BABCACBD
您能告诉我如何使用此工具将 css 文件转换为 bss 文件吗?从网站上的信息来看,我不太清楚如何将它用于 JavaFX 应用程序。
任何帮助将不胜感激。
【问题讨论】:
标签: css javafx-2 javafx javafx-8
假设您的 jdk 8 主 bin 目录位于您的 shell 路径中。
创建Love.java:
import javafx.stage.*;
import javafx.application.*;
import javafx.scene.control.*;
import javafx.scene.*;
public class Love extends Application {
public void start(Stage stage) throws Exception {
Scene scene = new Scene(new Label("hello, world"));
scene.getStylesheets().add("love.css");
stage.setScene(scene);
stage.show();
}
}
编译:
javac Love.java
创建love.css:
.label { -fx-text-fill: firebrick; }
编译:
javafxpackager -createbss -srcfiles love.css -outdir . -outfile love
这将创建love.bss
现在你可以删除love.css,因为你已经不再需要它了。
现在运行您的应用:
java Love
即使您请求了love.css,JavaFX 运行时也足够聪明,可以识别出您有一个二进制文件 love.bss,并使用它来将 css 样式应用于您的应用程序。
【讨论】:
javafxpackager 仍在 Java 9 中,它已从 javafxpackager 重命名为 javapackager。
jpackage 是打包 Java 应用程序的未来,但不幸的是仅在 EA 版本中可用
jpackage 可用(或者如果它确实可用但不提供 css -> bss 转换),如果需要,您应该能够使用早期版本中的 javapackager 进行转换css 到 bss 文件。
在 Windows 上,我喜欢通过批处理文件来执行此操作(请注意,您需要定义 JAVA_HOME 系统变量)。您可以创建一个新的 .bat 文件,复制下面的代码并保存。然后,您可以从存储 .css 文件的同一文件夹中运行此批处理文件:
@echo off
for %%f in (*.css) do (
"%JAVA_HOME%\bin\javafxpackager" -createbss -srcfiles "%cd%\%%f" -outdir . -outfile %%~nf
)
echo.
echo Press any key to exit . . .
pause>nul
基本上 jewelsea 完美地解释了解决方案,请注意,只有当您的 css 文件中有一些内容时,它才会起作用。例如,它不适用于由 e(fx)clipse 创建的空 application.css,因此您可以简单地放置类似 .dummy-class {-fx-background-color: red;} 里面然后转换它。
【讨论】:
其他答案中的命令不再存在,但它的代码存在。
从 JavaFX 中保存 Css2Bin 类的代码。
然后在终端中运行java Css2Bin my-styles.css。将创建一个名为 my-styles.bss 的新文件。 (不要忘记添加所有 --add-modules 库的东西)
【讨论】: