Java:在不传递调用程序组件的情况下显示JPopupMenu

时间:2010-10-04 12:28:11

标签: java swing jpopupmenu

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

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

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

由于

1 个答案:

答案 0 :(得分:1)

查看JPopupMenu源代码,您就会明白为什么必须设置调用者。

显示一个没有任何现有组件的弹出菜单,可用性非常差,与浏览器弹出窗口在同一联盟中。

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