当我弹出JPopupMenu而不传递“调用程序组件”时,菜单不起作用:子菜单不会打开而且没有重新绘制。但是当我创建一个内部有JLabel的完全无用的JFrame时,我将JLabal作为调用者传递,它可以正常工作......
任何建议,如何避免创建无用的框架。我的应用程序确实没有任何框架打开,它只需要弹出一个简单的菜单。
JPopupMenu.show(null, xOnTheScreen, yOnTheScreen); // Doesn't work
JPopupMenu.show(aStupidJLabelInAStupidJFrame, x, y); // Works
由于
答案 0 :(得分:1)
查看JPopupMenu
源代码,您就会明白为什么必须设置调用者。
显示一个没有任何现有组件的弹出菜单,可用性非常差,与浏览器弹出窗口在同一联盟中。
为什么不能使用JComponent#setComponentPopupMenu
,或者在要显示弹出菜单的组件中添加鼠标侦听器?