java如何全局禁用默认上下文菜单
以下代码禁用添加到Scene
的所有现有TextField
的默认上下文菜单
for (Node node : scene.getRoot().lookupAll("*")) {
if (node instanceof TextField) {
((TextField)node).setContextMenu(new ContextMenu());
}
}
但是,如果您稍后将另一个TextField
添加到Scene
,则其默认上下文菜单不会被禁用。
如果每次添加TextField
时都运行上面的代码,就不会有问题,但这相当麻烦
那么,有没有办法禁用所有TextField
的默认上下文菜单(包括稍后添加到场景图中的那些)
# 1 楼答案
可以使用CSS删除
TextField
对象的上下文菜单:第一个样式类隐藏了
ContextMenu
本身。第二个隐藏了小箭头# 2 楼答案
^{} event 可以在到达目标
Node
之前被添加到Scene
或包含所有不应打开上下文菜单的TextField
的Parent
的事件筛选器使用: