在我的應用程序中,我想將鼠標和鍵盤事件轉發給不可見的JPanel,我希望JPanel像處理EDT一樣處理它們。原因是因爲應用程序有一個可選的擴展名來使用JOGL進行一些渲染。我已經在Swing中編寫了GUI的東西,所以我想重用這些代碼。不幸的是,你不能將Swing和JOGL的GLCanvas混合使用(我可以使用GLJpanel,但這太慢了,無法使用)。 JOGL確實有一個特性(Overlay),它可以讓你繪製一個Graphics實例來繪製GL上下文。所以我可以調用jpanel.paint(g)使用可以正常工作的疊加層將其繪製到屏幕上。剩下的唯一難題是以某種方式使用GLCanvas上的鼠標和鍵盤監聽器來接收和轉發事件到JPanel。模擬事件調度線程
我已經嘗試使用findComponentAt(mousex,mousey)在特定位置上獲取JPanel上的組件,然後調用dispatchEvent到該組件,但組件不響應鼠標單擊或任何事情。我假設EDT做了一些從MouseEvent/KeyEvent到ActionEvent的轉換,以使按鈕和文本框正常工作。如果最壞的情況出現,我可以測試組件是不是JButton,並使用doClick,它至少會給我一些功能。但這不適用於非按鈕組件,它不會執行任何按鈕懸停等。我知道我應該爲這個(例如,FengGUI)使用一個OpenGL GUI工具包,但是我依賴於Swing的HTML渲染功能,我不想重寫那些代碼。
如何正確接收GLCanvas中的MouseEvent並將它們轉發給JPanel,以便進行正確的處理? (即,用於按鈕的動作偵聽器被激活時,按鈕顯示不同的圖形時懸停等)
任何提示,將不勝感激
*「任何提示將不勝感激」* 1)呼吸一下。 2)提出問題。 –