我正在使用一个在GLCanvas上绘制的应用程序。我想在它上面添加一个“浮动菜单”(我会在Swing中通过在玻璃窗格中添加一个菜单来做这件事)。既然GLCanvas没有扩展容器,那么建议的方法是什么呢?
发布于 2009-09-14 23:18:42
GLCanvas inherits from java.awt.Component,所以当您向JFrame添加GLCanvas时,您可以在包含的JFrame上使用glasspane。
或者,根据您想要的视觉效果,您可以在场景在GLCanvas上完成渲染后,添加对glOrtho的GL调用,然后使用GL本身中的基元在场景顶部绘制菜单(尽管那样您将无法操纵自己的回调行为等...我不能从问题中确定您是否想要进入到这个问题中)。
发布于 2009-09-15 05:01:48
你说的是弹出式菜单吗?您可以将MouseListener添加到您的GLCanvas (因为它是从组件扩展而来的),在MouseListener中,检查mouseEvent.isPopupTrigger(),如果是这样的话,创建您的JPopupMenu -因为您想在重量级组件上显示它,所以在显示JPopupMenu之前调用setLightweightPopupEnabled(false) -然后在JPopupMenu上调用show(glCanvas,x,y)。
https://stackoverflow.com/questions/1424250
复制相似问题