如何在 JavaFX 中为组布局添加背景颜色?
Posted
技术标签:
【中文标题】如何在 JavaFX 中为组布局添加背景颜色?【英文标题】:How to add background colour to Group layout in JavaFX? 【发布时间】:2014-08-14 05:44:09 【问题描述】:我需要为 JavaFX 中的组添加背景颜色。我试图用 CSS 添加它,但由于某种原因它不起作用。 CSS 适用于所有其他布局管理器,但不适用于 Group。我该怎么办?
【问题讨论】:
【参考方案1】:解决方案
将您对Group
的使用替换为Pane
,事情的表现将相似,除了您将获得使用CSS 设置窗格背景样式等操作的能力。
背景
如果您想使用 CSS 设置父节点的样式,请使用源自 Region 的内容:
Region 是所有基于 JavaFX 节点的 UI 控件和所有布局容器的基类。它是一个可调整大小的父节点,可以通过 CSS 设置样式。它可以有多个背景和边框。它旨在支持与 JavaFX 相关的尽可能多的背景和边框 CSS3 规范。
Group 被设计成一个非常轻量级的父级,这会产生最小的处理和存储开销,因此它是supports only very minimal CSS properties(并且不支持 CSS 背景)。
另一方面,Regions 提供广泛的 CSS 样式功能。
Pane 是一个具体的 Region 子类,其行为最像一个组(例如,它不进行隐式布局,您手动在窗格中布置节点)。
替代解决方案
此替代解决方案允许您将“背景”节点添加到组中。它适用于代码,而不是 CSS。
您添加到组中的项目由绘画算法从后到前分层。因此,添加一个彩色矩形作为组中的第一项,该矩形将有效地形成组的背景。
【讨论】:
我之前考虑过您的替代解决方案,但我认为使用 Pane 处理组件会更容易。非常感谢!【参考方案2】:实际上,我说在 javaFx 中一切皆有可能,因为它们已经足够酷了。
所以假设您的 Group
是组并且您想要更改 Background
ColorInput ci = new ColorInput(group.getLayoutX(),
group.getLayoutY(),
group.getLayoutBounds().getWidth(),
group.getLayoutBounds().getHeight(),
Color.WHITE);
group.setEffect(ci);
咔嚓嚓!!!!我的背景是白色的!!
Color.RED); //i change the last part to red
group.setEffect(ci);
咔嚓!!!卡布姆!!!我有红色背景
fyi : 这会给你带来一些关系问题。
希望对你有帮助
【讨论】:
以上是关于如何在 JavaFX 中为组布局添加背景颜色?的主要内容,如果未能解决你的问题,请参考以下文章
如何在 ListView 中为 TextView 的背景颜色添加渐变效果?