【问题标题】:Ubuntu can't show GUI elements designed with .css filesUbuntu 无法显示使用 .css 文件设计的 GUI 元素
【发布时间】:2018-02-07 18:36:46
【问题描述】:

我在一个 Java 项目的小组中工作,目标是使用 JavaFX 设计 GUI。 GUI 的主要结构是完整的,它工作得很好,直到我们使用 CSS 自定义按钮和文本框等的一些图形细节。 GUI 在 Windows 和 MAC 上运行没有任何问题,但是当我尝试在 Ubuntu 上运行它时,出现了问题。

只要我在 Ubuntu 上通过 Netbeans 启动并运行 GUI,就不再显示通过 .css 文件调整的元素的一些详细信息。 这个问题出现在几个按钮和文本框上。

可以在没有错误消息的情况下构建和执行 Java 项目。 我只收到一些警告,但它们在 Windows 或 MAC 下不会引起任何问题。

构建期间:

Note: /.../.../.../.../nameOfClass.java uses unchecked or unsafe operations.
Note: Recompile with -Xlint: unchecked for details.
Detected JavaFX Ant API version 1.3
Launching <fx:jar> task from /usr/lib/jvm/jdk1.8.0_161/jre/../lib/ant-javafx.jar
Warning: From JDK7u25 the Codebase manifest attribute should be used to restrict JAR repurposing.
         Please set manifest.custom.codebase property to override the current default non-secure value '*'.
Launching <fx:deploy> task from /usr/lib/jvm/jdk1.8.0_161/jre/../lib/ant-javafx.jar
No base JDK. Package will use system JRE.
No base JDK. Package will use system JRE.
jfx-deployment-script:
jfx-deployment:
jar:
jfx-rebuild:
BUILD SUCCESSFUL (total time: 3 seconds)

运行时:

WARNING: Loading FXML document with JavaFX API of version 9.0.1 by JavaFX runtime of version 8.0.161

通过 Scenebuilder 中的路径设置对 .css 文件的访问。 Scenebuilder 将路径直接粘贴到 .fxml 文件中。 如:

<AnchorPane prefHeight="500.0" prefWidth="400.0" style="-fx-background-color: #EEEEEE;" stylesheets="@../styleSheets/loginStyle.css" xmlns="http://javafx.com/javafx/9" xmlns:fx="http://javafx.com/fxml/1" fx:controller="packagename.login.LoginController">

.css文件的内容:

/*
To change this license header, choose License Headers in Project Properties.
To change this template file, choose Tools | Templates
and open the template in the editor.
*/

.button {
    -fx-background-color:  #007399;
    -fx-text-fill: #FFFFFF;
    -fx-stroke: #FFFFFF;
}

.button:hover{
    -fx-background-color: #328fad;
}

.button:pressed{
    -fx-background-color: #005c7a;
}

有趣的是,当我在场景构建器中打开 .fxml 文件时, 一切都正确显示。 但是一旦我在 Ubuntu 上运行 Netbeans 的 GUI,按钮看起来就不同了,或者它们没有显示出来。


我的设置:

Ubuntu 17.10

带有 Java 的 Netbeans 8.2:1.8.0_161; 运行时:Java(TM) SE 运行时环境 1.8.0_161-b12;

JavaFX 场景生成器 9.0.1 构建信息 版本 9.0.1 Java 版本:9+181,甲骨文公司

“java -version”的本地 Java 版本: java版本“1.8.0_161” Java(TM) SE 运行时环境 (build 1.8.0_161-b12) Java HotSpot(TM) 64 位服务器 VM(内部版本 25.161-b12,混合模式)


我已经尝试了以下解决方案,但均未成功:

我尝试了不同的本地 Java 版本: - java-8-openjdk-amd64 - java-9-openjdk-amd64 - jdk1.8.0_151 - jdk1.8.0_161 - jdk-9.0.4

我更改了 Netbeans 的 Java 版本: /netbeans-8.2/etc/netbeans.conf 我尝试了上面所有这些 Java 版本。 Netbeans 只能在 jdk 1.8* stable 下运行,但我的问题没有解决方案。 我不认为问题是因为 Java 版本。 我的同事在 Windows 和 MAC 上使用相同的 Java、Netbeans 和 Scenebuilder 版本,并且适用于他们。

我已将我的桌面环境从 gnome 更改为 xfce、kubuntu 和 unity。 但问题仍然存在。

我通过 git 在另一台具有相同 Ubuntu、Netbeans 和 Scenebuilder 版本的笔记本电脑上克隆了项目,问题也出现在这里。

不幸的是,我找不到 javafx 或类似的任何日志文件。

如果有人有解决此错误的想法,我会非常高兴。

最好的问候

【问题讨论】:

  • 您是否正在专门为您的 Linux 机器重建 jar 文件?目前尚不清楚构建日志是来自 linux 机器还是一般。如果您在 linux 机器上重建它,请尝试仅测试在其他机器上正常工作的 jar 文件,看看在您的 linux 机器上运行它时是否出现问题。还要检查您创建的 jar 文件(不工作的那个),并查看 CSS 文件是否包含在正确的位置。

标签: java css ubuntu javafx netbeans


【解决方案1】:

终于找到了解决办法。我使用了一个用 Scenebuilder 创建的“矩形”对象。 “平滑”选项未选中。这导致了Linux机器下的错误。

isSmooth() 的属性描述:
定义此形状是否使用抗锯齿提示。如果该值等于 true,则应用渲染提示。

要解决此问题,请在
“属性:矩形 > 特定 > 平滑”下将“平滑”设置为“真”

【讨论】:

    猜你喜欢
    • 2017-07-25
    • 2021-10-02
    • 2021-07-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多