2012-07-13 38 views
0

我已經構建了一個簡單的接口,填充了我的整個JFrame。我正在使用在互聯網上發現的FinalGlassPane類版本here單獨面板的Java Swing GlassPane功能?

這個玻璃窗格沒有常規的事件偵聽器,但它監視它的底層組件的AWTEvents。這樣就可以實現界面的全部功能,並且我可以用一個AWTEvent處理程序響應全局鼠標移動座標,並相應地繪製所有內容。一切都很好,但現在我需要在主JFrame中重複使用這個功能,每個功能都有自己的座標空間和事件處理程序。我剛剛瞭解了JLayeredPane,但是想確保這個功能可以與它一起使用。 IE在頂部添加一個完全透明但可繪製的JPanel圖層,使用它處理AWTEvents,並且仍然有底層事件正常觸發。

編輯:我正在閱讀有關在一個JDesktopPane中使用多個JInternalFrame(和相關的玻璃窗格)。我不認爲JDesktopPane與佈局管理器一起工作,所以我必須在需要時絕對定位/調整2幀,但這可能是最佳選擇。 END EDIT

我想要做的最後一件事是爲每個接口組件添加鼠標移動偵聽器,並且必須轉換爲父面板座標才能運行相同的方法。

如果必須,我可以繼續監視完整的玻璃面板鼠標座標,並找出如何從那裏分支邏輯。自我包容和個性化會更好。作爲最後一個警告,我想最終把它帶給Android,但對android圖形一無所知。如果沒有分層面板功能,我幾乎寧可實現它第一次和第一次更難,更便攜的方式。

回答

3

這可以通過使用JXLayerJLayer如果您使用的是Java 7 在JXLayer/JLayer的一般功能優於玻璃面板來完成。

沒有基於Swing/AWT的解決方案將在Android上工作 - 您必須在那裏使用Android特定組件。