Java JPopupMenu在画布下显示

Java JPopupMenu在画布下显示,java,swing,canvas,awt,jpopupmenu,Java,Swing,Canvas,Awt,Jpopupmenu,我有一个画布,一些文本字段和上下文菜单 当我启动应用程序并右键单击画布时,会显示一个弹出菜单。但是,当我在文本字段中写入内容时,右键单击画布,就会在画布后面显示弹出窗口 你知道如何解决这个问题吗?1)Canvas是AWT组件,是重量级组件类型 2) jpopmpmenu是Swing JComponent和轻量级JComponents 3) 使用Swing JPanel而不是AWT画布 4) 你的问题是关于或 解决了问题。提供一些代码,最好是SSCE。通常,只要写一个SSCE,你就会发现你的问题。

我有一个画布,一些文本字段和上下文菜单

当我启动应用程序并右键单击画布时,会显示一个弹出菜单。但是,当我在文本字段中写入内容时,右键单击画布,就会在画布后面显示弹出窗口

你知道如何解决这个问题吗?

1)
Canvas
AWT组件
,是
重量级组件类型

2)
jpopmpmenu
Swing JComponent
轻量级JComponents

3) 使用
Swing JPanel
而不是
AWT画布

4) 你的问题是关于或


解决了问题。

提供一些代码,最好是SSCE。通常,只要写一个SSCE,你就会发现你的问题。很抱歉,我错过了一个CI,需要一个重量级组件来使用opengl。同意opengl的正确方法,你的选择比使用JPopup使用窗口或未修饰的对话框更简单,在那里你可以放置Swing JButtons,以便使用GridLayoutugh进行布局。。在我喝咖啡之前添加回复是毫无意义的+1@Andrew汤普森:也许是你的失眠:-)此调用会影响将来创建的所有弹出菜单。通常,通过调用
popup.setLightWeightPopupEnabled(false)
修改特定JPopup实例的
lightWeightPopupEnabled
属性就足够了。
JPopupMenu.setDefaultLightWeightPopupEnabled( false );