2015-07-10 62 views
1

我一直在做一个按钮扩展类,当左键单击时,在按钮的可配置侧/角上显示保持打开弹出菜单(ContextMenu对象)。构造函数接受一个像NORTH_LEFT这样的枚举值,它指示按钮所在的那一边,以及按钮和弹出框上的哪些边对齐。换句话说,2应该总是显示为L形组合,而不是T形。如何去除JavaFX ContextMenu周围的阴影边界?

所以,当我想要做这样的事情EAST_BOTTOM其中两个按钮,弹出窗口的底部边缘应该对齐,我估计像这样的工作:

PopupMenu.show(this, Side.RIGHT, 0, this.getHeight() - PopupMenu.getHeight()); 

但我得到的是出现太大的弹出应该高一些。这是因为PopupMenu.getHeight()调用正在返回一个更大的值,然后是预期的。我怀疑是因为它的尺寸包含了很大的阴影边界。我注意到,这个半可见的边框也延伸到我的按钮上,并防止在菜单附近的按钮边缘注册鼠标点击。所以我有很多理由想要一个0宽度的边框。

我认为有一种方法可以通过CSS来实现。我试过将-fx-background-insets和-fx-padding设置为0,但这两者似乎都没有什么区别。还有其他建议吗?

+0

您是否检查过[this](http://stackoverflow.com/a/25437004/3956070)?是同一个问题? –

+0

我确实看到了这一点,而且我尝试过使用.root.popup {}设置进行游戏,但迄今为止所做的任何操作都不会影响边框的大小。 –

+0

图片将有助于理解您的问题... –

回答

2

解决方案是将-fx-effect: null;添加到ContextMenu的CSS中。这将删除作为ContextMenus的modena.css默认设置的dropshadow效果。一旦我做到了,我就能够正确地将我的菜单放在需要的地方。

此工作答案的信用转到JoséPereda--我们在上面的评论中提到了这一点。