我需要在JavaFX中为组添加背景颜色。我试图用CSS添加它,但由于某种原因它没有用。 CSS适用于所有其他布局管理器,但不适用于Group。我该怎么办?
答案 0 :(得分:11)
<强>解决方案强>
将Group
的使用情况替换为Pane
,事情的行为会相似,但您将能够使用CSS来制作窗格背景样式等内容。
<强>背景强>
如果要使用CSS为父节点设置样式,请使用派生自Region的内容:
Region是所有基于JavaFX节点的UI控件和所有布局容器的基类。它是一个可调整大小的父节点,可以从CSS设置样式。它可以有多个背景和边框。它旨在支持与JavaFX相关的背景和边框的CSS3规范。
一个组被设计成一个非常轻量级的父级,它产生最小的处理和存储开销,因此它supports only very minimal CSS properties(并且不支持CSS背景)。
另一方面,Regions提供了广泛的CSS样式功能。
Pane是一个具体的Region子类,其行为最像一个组(例如,它不执行隐式布局,您手动在窗格中布置节点)。
替代解决方案
此备用解决方案允许您向组添加“背景”节点。它适用于代码,而不是CSS。
您添加到组中的项目由绘制算法从后到前分层。因此,添加一个彩色矩形作为组中的第一个项目,矩形将有效地形成组的背景。
答案 1 :(得分:1)
实际上,我在javaFx中说一切皆有可能,因为它们足够酷。
因此假设您的Group
是群组,并且您想要更改Background
ColorInput ci = new ColorInput(group.getLayoutX(),
group.getLayoutY(),
group.getLayoutBounds().getWidth(),
group.getLayoutBounds().getHeight(),
Color.WHITE);
group.setEffect(ci);
kabooommm !!!!我有一个白色的背景!!
Color.RED); //i change the last part to red
group.setEffect(ci);
kaboomm !!! kabooom!我有红色背景
fyi:这会给你带来一些关系问题。
希望有所帮助