如何将CSS转换为BSS

4
3个回答

11

假设你的 JDK 8 主目录下的 bin 目录已经添加到了 shell 的 PATH 路径中。

创建 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样式到您的应用程序。

love


不幸的是,对于 Java 9,javafxpackager.exe 似乎已经丢失。 - pdem
1
javafxpackager仍然存在于Java 9中,它已经从javafxpackager更名为javapackager - jewelsea
1
不可用于OpenJDK。看起来jpackage是打包Java应用程序的未来,但不幸的是只能在EA版本中使用。 - smac89
对于后续的Java版本,例如11-13,在jpackage可用之前(或者即使它可用但不提供css->bss转换),如果需要,您应该能够使用早期版本的javapackagercss转换为bss文件。 - jewelsea

2
在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;}的内容,然后进行转换。


0

其他答案中的命令已经不存在了,但相关代码还存在。

请保存JavaFX中Css2Bin类的代码。

然后在终端运行java Css2Bin my-styles.css。一个名为my-styles.bss的新文件将被创建。(不要忘记添加所有--add-modules库)


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接