当前位置: 首页 > 知识库问答 >
问题:

JavaFX部署的CSS样式的应用程序问题

毛正浩
2023-03-14

我创建了一个JavaFX Maven应用程序,其中包含一些资源文件(在项目文件夹“src/main/resources”中)。该应用程序在NetBeans环境下运行良好。然而,当构建了自包含的JAR文件并将其复制到另一个文件夹时,应用程序的可视项(组合框、TextFields、VBoxes、...)没有正确显示(不同的颜色、错误的填充、...)。

CSS文件存在于JAR文件中,因为应用程序中(NetBeans之外)正确加载了一些样式(如按钮样式)。下面是我用来将样式表加载到JavaFX场景中的代码

scene.getStylesheets().add(this.getClass().getResource("/styles/styles.css").toExternalForm());

“styles.css”文件保存在“src/main/resources/styles/styles.css”中。

作为示例,在Java代码中应用了以下样式:

Button save = new Button("Save");
save.getStyleClass().add("primary-button"); // -> It works
.combo-box-popup {
    -fx-min-width: 555px;
}

.combo-box-popup .list-view {
    -fx-min-width: 555px;
}

.combo-box-base  {
    -fx-background-color: transparent, transparent, transparent, white;
    -fx-border-width: 1;
    -fx-border-color: #666666;
    -fx-font-family: "Roboto Light";
    -fx-font-size: 14px;
    -fx-fill: #666666;
}

.combo-box .arrow {
    -fx-background-color: #979797;
    -fx-background-radius: 0;
}

.combo-box .arrow-button {
   -fx-background-color: #d8d8d8;
   -fx-background-radius: 0;
}

.combo-box .arrow-button:hover {
    -fx-background-color: #e1e1e1;
    -fx-background-radius: 0;
}

.combo-box-popup .list-view .list-cell:filled:selected, .combo-box-popup .list-view .list-cell:filled:selected:hover {
    -fx-background-color: #6995df;
}

.combo-box-popup .list-view .list-cell:filled:hover {
    -fx-background-color: #f3f3f3;
}

我希望这有助于理解问题。

共有1个答案

陆畅
2023-03-14

在CSS文件中做了一些改动后,我意识到JavaFX 8改变了CSS中的一些特性(比如背景),并添加了一些新的默认样式(比如组合框中的白色文本)。

最后,我改变并添加了一些样式到我的CSS文件。现在,CSS工作得很好。谢谢!

 类似资料:
  • 我试图在NetBeans中构建一个可以部署到用户和最终用户的应用程序。我对部署项目还是相当陌生的,这是迄今为止我做过的最复杂的一个,所以请容忍我。我目前在NetBeans中有一个工作应用程序,它利用JDK15和JavaFX15。只要我在NetBeans内部运行,一切都会按预期运行。我已经到了我想确保我可以在NetBeans之外发布这个应用程序的地步。为此,我进行了一些搜索,找到了以下教程。 htt

  • 我使用教程创建了一个spring-boot应用程序,并使用'mvn clean install'命令成功地构建了该应用程序。之后,我执行'mvnspring-boot:run'命令来运行应用程序,它也成功地部署了。但是,当我通过点击http://localhost:8080/api在浏览器上加载页面时,它总是重定向到我几个月前部署的http://localhost:8080/login。我应该如何

  • 我已经使用JPA和JDK 7在spring boot上创建了一个应用程序,但我无法将其部署到Tomcat 7。tomcat 7是否支持Spring boot 2.0。5.JPA/Hibernate的发布版本和相关jar。

  • 我有一个使用Thymeleaf作为模板引擎的Spring Boot应用程序,我添加了一个默认控制器,在服务器上部署时应该重定向到主页,控制器代码片段如下: 索引由 ViewResolver 解析到匹配的网页。 当在独立的Tomcat实例上部署生成的war“app . war”时,应用程序工作正常,我被重定向到主页(localhost:XXX/context _ path/index),“local

  • Requirements 运行一个Spark Streaming应用程序,有下面一些步骤 有管理器的集群-这是任何Spark应用程序都需要的需求,详见部署指南 将应用程序打为jar包-你必须编译你的应用程序为jar包。如果你用spark-submit启动应用程序,你不需要将Spark和Spark Streaming打包进这个jar包。 如果你的应用程序用到了高级源(如kafka,flume),你需

  • 我遵循了https://blog.jetbrains.com/idea/2013/03/packaging-javafx-2-applications-in-intellij-idea-121/中的步骤 但是当我尝试构建工件时,在最后一步中,我得到了这个错误 错误:Java FX Packager:无法生成工件-FX:Deploy在此JDK中不可用 这里有一个快速测试的hello world应用程