2012-07-16 22 views
1

我在Oracle的JLayeredPane的教程一直盯着,但他們在會搞亂我,在我所試圖做的沒有得到的方式佈局。介紹的JLayeredPane到現有的JFrame

我有到現在爲止還沒有層的概念的應用程序。所有內容都放在JFrame中的單層中。

我現在要介紹的需要,在一定的位置,覆蓋在那裏停留,通常現有的組件零星出現,一個組件。我是否必須修改現有的應用程序JFrame,以便將其所有頂層內容(即直接添加到JFrame中的組件)添加到JFrame的JLayeredPane中?

或者,究竟是什麼?

我正在尋找一個簡單的方法來適應這個GUI使用層與現有的GUI的最低返工。

在此先感謝您的任何幫助。

+0

您是否一次只能顯示多個圖層?例如一層是部分覆蓋在波紋管層上嗎?或者只有頂層圖層可見? – Mohayemin 2012-07-17 03:08:42

+0

主圖層將始終可見。偶爾不時會覆蓋主要層的一小塊區域,這些觸發來自UI線程之外的事件。這個區域是「只讀」的 - 它永遠不會獲得鍵盤焦點,也不需要響應鼠標事件。所有輸入將由主層中的組件處理。基於計時器的事件將導致它清除。換句話說,它就像一個工具提示,只不過它是由內部事件而不是鼠標移動觸發的。 – 2012-07-17 12:49:40

回答

1

你可能要考慮,而不是對glass pane繪製的重疊元件。這樣你就可以完全保留底層結構。

+0

這可能會起作用,但後來我失去了將組件隱藏起來的能力,不是嗎?我必須讓它看不見,不是嗎?只有幾個組件直接添加到主JFrame的內容窗格中。我不能簡單地將它們添加到分層窗格中嗎?或者會招來更多麻煩? – 2012-07-16 21:04:25

+0

不,這不起作用 - 「當玻璃窗格可見時,它會阻止所有輸入事件到達內容窗格中的組件」 - http://docs.oracle.com/javase/tutorial/uiswing/components/ rootpane.html - 我希望內容窗格功能齊全。 – 2012-07-16 21:09:56

+0

@SteveCohen - 那麼根窗格的分層窗格呢?除非您現有的GUI指定高度,否則所有內容都應該位於DEFAULT_LAYER。你可以將你的覆蓋元素粘貼在PALETTE_LAYER上。 – 2012-07-16 21:14:19