![](/img/trans.png)
[英]Component does not receive mouse event anymore after it has been re-added in parent component in Java 8
[英]Stereo problems on Linux using Java 7 - how to change the GC of a component after it has been added to a parent
我有一個包含在JPanel中並顯示在屏幕上的AWT畫布。 我目前使用Java 7 update 45並在Red Hat 6上運行。
當用戶請求具有openGL立體聲功能的畫布時,我將刪除現有的畫布,創建一個新的畫布,該畫布選擇一個立體視覺效果並在畫布上設置適當的GraphicsConfiguration。 問題在於,隨着Java 7中的新更改,當將此畫布重新添加到JPanel時,Jpanel的GraphicsConfiguration(GC)會覆蓋Canvas的GraphicsConfiguration。
這發生在java.awt.Container.addImpl()中 ,在該處它調用包范圍的方法Component.setGraphicsConfiguration() 。
我目前在此包范圍方法上使用Reflection,以從我的代碼中調用該方法並更改畫布上的GC。
有沒有比這更好的解決方案了? 換句話說,如何在將組件添加到父組件后更改其GC?
我建議您根本不要更改GC。 而是嘗試創建具有立體聲功能的GC,並允許回退到非立體GC。 如果成功,則啟用立體渲染路徑和菜單項。
在以下錯誤報告中報告了JDK 7 AWT更改引起的立體回歸並進行了處理: https ://bugs.openjdk.java.net/browse/JDK-8036875-Component.setGraphicsConfiguration()破壞了某些3D應用程序
“ babor”對Java3D Canvas3D用戶的解決方法是重寫Canvas3DarchitectureChanged方法,並使用反射更新最頂層的組件以使用立體圖形配置。 http://forum.jogamp.org/Java3D-stereo-tp4029914p4031792.html
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.