1

当我让弹出一个 JPopupMenu 而不传递“调用程序组件”时,菜单不起作用:子菜单没有打开并且没有重新绘制。但是当我创建一个内部带有 JLabel 的完全无用的 JFrame,并将 JLabal 作为调用者传递时,它可以正常工作......

任何建议,如何避免创建无用的框架。而且我的应用程序确实没有打开任何框架,它只需要弹出一个简单的菜单。

JPopupMenu.show(null, xOnTheScreen, yOnTheScreen); // Doesn't work
JPopupMenu.show(aStupidJLabelInAStupidJFrame, x, y); // Works

谢谢

4

1 回答 1

1

看一下JPopupMenu源代码,您就会明白为什么必须设置调用程序。

在没有任何现有组件的情况下显示弹出菜单将是非常糟糕的可用性,与浏览器中的弹出窗口相同。

为什么不能使用JComponent#setComponentPopupMenu,或者向要显示弹出菜单的组件添加鼠标侦听器?

于 2010-10-04T15:16:43.513 回答