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

JavaFX ControlsFx添加自定义CSS(通知)

萧萧迟
2023-03-14

我正在使用Controlsfx库,特别是它的通知组件,但是它的默认CSS样式根本不适合我的应用程序样式,所以我正在尝试更改它。

我尝试使用这篇文章中提供的解决方案有没有办法更改内置的Controlfx通知弹出颜色?

因此:

String css = this.getClass().getResource("notificationpopup.css").toExternalForm();

primaryStage.getScene().getStylesheets().add(css);
Notifications.create().owner(primaryStage).(...).show();

CSS文件正在成功加载,将其添加到styleSheets也没有错误,但是通知的样式保持不变。我尝试将整个文件(除了我的更改)加载到库中使用的文件和简短的css文件中,仅加载我想要更改的内容

我的css文件更改,供参考:

.notification-pane .notification-bar > .pane {
-fx-background-color: linear-gradient(to top, #3e5151, #decba4);
-fx-padding: 0 7 0 7;

}

(现在我只是想把背景换成我选择的渐变)

我还尝试实现与其他controlsfx元素相关的问题的建议,也就是在调用show之后将url添加到样式表中,但没有成功。

(我也尝试过,只是想检查一下,在库jar中粗暴地更改css,但不知何故,这也失败了,因为css保持不变,没有任何错误,即使我修改了jar并再次添加了它)。

由于所提供的解释很少,我不知道这里到底出了什么问题。

在我的解决方案中,我还必须避免调用。owner()并将通知分配给特定的阶段,此后它将显示在该阶段内部,而不是在该阶段外部的屏幕上。也许可以通过将样式表添加到其他元素(而不是primaryStage)来解决这个问题?但目前,即使将通知限制在某个阶段,我也无法实现任何css更改

共有2个答案

傅兴平
2023-03-14

更改组件css样式的两种可能的解决方案

  1. 在控制器类中,调用getStyle()方法

节点。getStyle(“-fx背景色:线性渐变(到顶部,#3e5151,#decba4);-fx填充:0 7 0 7;”);

使用与该节点上的css文件中相同的代码直接对其进行样式设置并覆盖css值。

node.setid("myID");

然后在您的css文件中编写该标签所需的任何内容,例如

#myID {

   -fx-background-color: red;

}
叶浩荡
2023-03-14

回答这个有点晚。但是如果有人有这个问题,您可以使用这两种方法来修复它。

可能会出现此问题,因为您正在为场景使用多个样式表。添加通知弹出窗口。css css到arraylist的开头。我没有确凿的证据证明这是如何解决问题的。但我认为这是因为样式表的顺序。(替代样式表应放在样式表数组列表中的原始样式表之后。它们之间不能有其他样式表。)

String css = this.getClass().getResource("notificationpopup.css").toExternalForm();

primaryStage.getScene().getStylesheets().add(0, css);

放!对css类属性很重要。例如:

.notification-bar > .pane {
    -fx-background-color: red !important;
    -fx-padding: 10 10 10 10 !important;
}
 类似资料:
  • 问题内容: 如何添加自定义CSS文件?以下配置对我不起作用: 结果: 问题答案: 一种简单的方法是将其添加到您的: 然后将文件放入文件夹。

  • 我的Spring启动应用程序有问题。它似乎不加载自定义css文件。我把它放在资源/静态/css下,我也尝试过在资源/公共/css下,但它也不起作用。 我把我的项目留在git hub帐户上,这样你就可以检查出什么问题了。 GitHub项目 另外,当我打开chrome控制台下的登录页面时,会出现一个警告 资源被解释为样式表,但使用 MIME 类型文本/纯文本传输:“http://localhost:8

  • 虽然Blockly定义了许多标准块,但大多数应用程序需要定义和实现至少一些域相关块。 块由三个部分组成: 块定义对象:定义块的外观和行为,包括文本,颜色,字段和连接。 工具箱参考:工具箱XML中对块类型的引用,因此用户可以将其添加到工作区。 生成器函数:生成此块的代码字符串。它是用JavaScript编写的,即使目标语言不是JavaScript,甚至是用于Android端的Blockly。 块定义

  • 我做了,有一个按钮,我想在通知和按钮点击上执行两个不同的

  • 问题内容: 我正在使用一个Android应用程序,该应用程序加载HTML页面并在Web视图中显示它。问题是我想添加我的自定义CSS(加载的HTML没有任何CSS或指向CSS的链接)。如何使用jsoup将自定义css添加到HTML代码中?我无法修改html。Webview之后如何打开它?谢谢 问题答案: 几种方法。您可以用来将HTML附加到元素上。 或者,用于向现有元素添加属性。这是一个添加到所有链

  • 应用可以通过manage.py注册它们自己的动作。例如,你可能想为你正在发布的Django应用添加一个manage.py动作。在本页文档中,我们将为教程中的 polls应用构建一个自定义的 closepoll命令。 要做到这点,只需向该应用添加一个management/commands目录。Django将为该目录中名字没有以下划线开始的每个Python模块注册一个manage.py命令。例如: p