如何删除JavaFX ContextMenu周围的阴影边框?

时间:2015-07-10 15:14:13

标签: java javafx

我一直致力于一个Button扩展类,当左键单击时,它会在按钮的可配置侧/角上显示一个保持打开的弹出菜单(ContextMenu对象)。构造函数采用类似于NORTH_LEFT的枚举值,指示按钮的一侧显示以及按钮和弹出窗口上的哪些边对齐。换句话说,2应始终以L形组合显示,而不是T形。

所以当我想做像EAST_BOTTOM这样的东西时,按钮和弹出窗口的底边应该对齐,我觉得这样的东西会起作用:

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

但我得到的是一个Popup,看起来要高得多。这是因为PopupMenu.getHeight()调用返回的值大于预期值。我怀疑是因为它的尺寸包括大阴影边框。我注意到这个半可见边框也会延伸到我的按钮上,并防止鼠标点击在菜单附近的按钮边缘注册。所以我有多种理由想要一个0宽的边框。

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

1 个答案:

答案 0 :(得分:2)

解决方案是将-fx-effect: null;添加到您的CSS中以获取ContextMenu。这将删除作为ContextMenus的modena.css默认值的drops影子效果。一旦我这样做,我就可以正确地将我的菜单放在我需要的地方。

这个工作答案归功于何塞·佩雷达 - 我们在上面的评论中对此进行了研究。