【问题标题】:Stylesheet is not applied in JavaFx样式表不适用于 JavaFx
【发布时间】:2019-12-24 12:22:26
【问题描述】:

我正在开发一个 JavaFX 应用程序,但无法应用样式表。

我的代码:

public class JavaFX extends Application {

    @Override
    public void start(Stage primaryStage) throws Exception {
        //set up the stage
        primaryStage.initStyle(StageStyle.UNDECORATED);
        primaryStage.setMaximized(true);

        Group root = new Group();
        root.setId("root");
        Scene scene = new Scene(root);
        primaryStage.setScene(scene);
        scene.getStylesheets().add(JavaFX.class.getResource("styling.css").toExternalForm());

        //Get the screensize
        Dimension screenSize = Toolkit.getDefaultToolkit().getScreenSize();
        double screenX = screenSize.getWidth();
        double screenY = screenSize.getHeight();

        //Text objects
        Text text = new Text();
        text.setId("text");
        text.setText("Test");
        text.setY(50);

        //Add all objects to the root group
        root.getChildren().add(text);

        //Show the stage
        primaryStage.show();

        //Calculate Positions of all objects
        text.setX((screenX /2) - text.getBoundsInParent().getWidth());

我的样式表:

#text {
    -fx-font-size: 50px;
}

CSS 文件与 java 文件在同一个包中。

任何帮助将不胜感激!

【问题讨论】:

标签: java css javafx stylesheet


【解决方案1】:

您的代码正确应用了 css,至少我已经检查了您的字体大小和 -fx-font-size: 500px;并且“文本”按预期更改。请再次检查您的 style.css 文件。 (此外,您可以随时检查编译的内容并查看 jar 中确实存在的内容,以检查实际提取到您以后运行的内容中的内容)

不过,最可能的情况是,您可能有重复的同名 css 文件,其中一个覆盖了另一个。例如。一个在资源文件夹中,一个在与您的 .java 文件相同的位置

【讨论】:

  • 好像没有编译。忘记将其添加到 build.gradle。将 CSS 文件添加到 build.gradle 修复了它,谢谢!
  • @TheDutchMC76 “将 CSS 文件添加到 build.gradle 修复了它”——这不是必需的。 src/main/resources 下有你的 CSS 文件吗?默认情况下,Gradle 使用与 Maven 相同的源目录布局。所有 Java 源文件都在 src/main/java 下,而所有其他文件(即资源)在 src/main/resources 下。如果您希望资源与类在同一个包中,则将它们放在同一个相对目录下(例如src/main/java/com/example/JavaFX.javasrc/main/resources/com/example/styling.css)。
  • @Slaw 也可以说一下,来自 src/main/resources 的所有资源都可以在 jar 的顶层找到,以后可以通过 getClass()#getResource 找到或 getClassLoader()#getResource 从 jar 中的任何对象,无论包如何
  • @Slaw 我没有,我对 Gradle 进行了更多的挖掘,并且确实了解到没有必要将其放入 build.gradle,而是将其放入 src/main/resources。
猜你喜欢
  • 2012-07-27
  • 2013-03-11
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-04-13
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多