Java 向画布添加组件

Java 向画布添加组件,java,Java,我正在使用一个在画布上绘制的应用程序。我想在它上面添加一个“浮动菜单”(我会在Swing中通过在玻璃窗格中添加菜单来实现这一点)。既然GLCanvas不扩展容器,那么建议用什么方法来实现呢?,所以当您将GLCanvas添加到JFrame时,可以在包含JFrame的框架上使用glasspane 或者,根据您想要的视觉效果,您可以在GLCanvas上完成场景渲染后,将GL调用添加到glOrtho,然后使用GL本身中的原语在场景顶部绘制菜单(尽管这样您会被困在操纵自己的回调行为等方面……我不确定您是否

我正在使用一个在画布上绘制的应用程序。我想在它上面添加一个“浮动菜单”(我会在Swing中通过在玻璃窗格中添加菜单来实现这一点)。既然GLCanvas不扩展容器,那么建议用什么方法来实现呢?

,所以当您将GLCanvas添加到JFrame时,可以在包含JFrame的框架上使用glasspane


或者,根据您想要的视觉效果,您可以在GLCanvas上完成场景渲染后,将GL调用添加到glOrtho,然后使用GL本身中的原语在场景顶部绘制菜单(尽管这样您会被困在操纵自己的回调行为等方面……我不确定您是否想进入该问题).

你说的是弹出式菜单吗?您可以将MouseListener添加到GLCanvas(因为它是从组件扩展而来的),在MouseListener中,检查mouseEvent.isPopupTrigger(),如果是,则创建JPOppMenu-因为您希望在重量级组件上显示它,请在显示JPOppMenu之前调用setLightweightPopupEnabled(false),然后调用show(GLCanvas,x,y)在您的JPopupMenu上。

我认为我不能使用玻璃窗格,因为画布实际上将绘制在玻璃窗格的顶部,因为它是一个重量级组件。你是对的,我真的不想开始实现我自己的回调机制和直接的GL调用。所以如果你把swing组件设置为重量级,它仍然不能工作?隐马尔可夫模型。。。现在尝试一下,我发现通过执行以下操作可以毫无问题地在glcanvas上呈现swing下拉菜单:jpopMenu.setDefaultLightWeightPopupEnabled(false);ToolTipManager.sharedInstance().setLightWeightPopupEnabled(false);(虽然这需要在你使用JFrame做任何事情之前完成)嗨,Nate,我这里说的不是弹出菜单。菜单可能是一个糟糕的描述。它更像是一个浮动面板。它现在可以在一个固定的位置。我猜我需要使用一个布局管理器,它允许我重叠组件,并有一个面板(awt)重叠画布。