2009-09-14 84 views
0

我正在使用GLCanvas繪製應用程序。我想在它的頂部添加一個「浮動菜單」(通過向玻璃窗格添加一個菜單,我將在Swing中執行此操作)。由於GLCanvas不擴展Container,建議的方法是什麼?將組件添加到GLCanvas

回答

0

GLCanvas inherits from java.awt.Component,所以當你添加一個GLCanvas到你的JFrame時,你可以在你的包含JFrame上使用glasspane。或者,根據您想要的視覺效果,在場景完成GLCanvas渲染後,可以將GL調用添加到glOrtho,然後使用GL本身中的基元在場景頂部繪製菜單, (儘管如此,你會被卡在綁定自己的回調行爲等等......我不知道你是否想進入這個問題)。

+0

我不認爲我可以使用玻璃窗格,因爲畫布實際上會被繪製在玻璃窗格的頂部,因爲它是一個重量級的組件。你是對的,我真的不想開始實施我自己的回調機制,並直接進行GL調用。 – 2009-09-14 23:22:52

+0

因此,如果您將揮杆組件設置爲重量級,它仍然不起作用?嗯...現在試一試,我發現你可以在glcanvas上渲染下拉菜單,而不會出現問題: JPopupMenu.setDefaultLightWeightPopupEnabled(false); ToolTipManager.sharedInstance()。setLightWeightPopupEnabled(false); (雖然這需要在你對JFrame做任何事情之前完成) – Decker 2009-09-16 16:15:25

0

你說的是彈出式菜單嗎?你可以添加一個MouseListener到你的GLCanvas(因爲它從Component中擴展),在MouseListener中,檢查mouseEvent.isPopupTrigger(),如果是的話,創建你的JPopupMenu - 因爲你想通過一個重量級組件來顯示它,調用setLightweightPopupEnabled假)在顯示JPopupMenu之前 - 然後在您的JPopupMenu上調用show(glCanvas,x,y)。

+0

你好,我不是在說這裏的彈出式菜單。菜單可能是一個不好的描述。它更像是一個浮動面板。它現在可以在一個固定的位置。我猜我需要使用佈局管理器,它允許我重疊組件,並使Panel(awt)與GLCanvas重疊。 – 2009-09-15 12:38:07