JavaFX上下文菜单停止父级的透明背景

时间:2016-04-22 16:17:46

标签: javafx contextmenu transparency shape

所以,我一直在JavaFX中编写一个模拟时钟,并且已经降低了基本功能。现在,当我点击自定义按钮(用Polygon制作的三角形)时,我正在尝试添加一个下拉菜单。到目前为止一切正常,除了当我尝试在单击按钮之前或之后添加ContextMenu时,我的StackPane的背景为白色。到目前为止,透明度一直很好。这是一些问题的照片。

它应该是这样的(你可以看到我的壁纸,因为它应该是透明窗口。) enter image description here

按下下拉菜单按钮后,背景会发生变化。 enter image description here

2 个答案:

答案 0 :(得分:1)

JavaFX控件由CSS设置样式。第一次创建控件时,将加载默认的用户代理样式表(modena.css),并将其中定义的样式应用于场景图。其他JavaFX节点类(如形状,图像视图和布局窗格)不会强制执行CSS加载(这是为了增强不需要CSS的图形密集型应用程序的性能)。

听起来好像上下文菜单是您创建的第一个控件:当您创建并显示它时,它会将默认CSS应用于场景。根窗格的默认背景颜色是不透明的颜色,因此虽然SceneStage可能是透明的,但一旦应用了CSS,场景的内容就不会。

修复方法是指定根窗格的透明度:

root.setStyle("-fx-background-color: transparent;");

或外部样式表中的等效项。

答案 1 :(得分:0)

要回答我自己的问题以防其他人想知道,似乎当ContextMenu被添加到场景中时,舞台的initStyle(StageStyle.TRANSPARENT)会被覆盖并显示Parent的颜色。由于我没有初始化根的任何CSS样式,它只显示白色。修复将是:

//父布局窗格

parent.setStyle(“ - fx-background-color:rgba(0,0,0,0.0)”);