2010-04-26 52 views

回答

1

只需將組件添加到中心和重新驗證(。

+0

完美地工作。謝謝! – derekerdmann 2010-04-26 12:47:53

+1

順便說一下,container.revalidate()實際上應該是container.validate()。 – derekerdmann 2010-04-26 12:55:12

+0

-1,此解決方案不起作用。它似乎可行,但嘗試調整框架的大小,現在將在新面板上繪製前一個面板。這是因爲「Z-Ordering」在Swing中的作用。根據您的確切要求,正確的解決方案是其他兩種建議之一。 – camickr 2010-04-26 16:04:21

1

你嘗試上線的東西:)父容器

container.add(BorderLayout.CENTER, newPanel); 
container.revalidate(); 
+1

您還需要在此建議中添加revalidate()或validate()。 – camickr 2010-04-26 16:05:53

0

使用管理這個對你Card Layout

void swapCenterPanel(JFrame frame, JPanel oldPanel, JPanel newPanel) { 
    frame.getContentPane().remove(oldPanel); 
    frame.getContentPane().add(newPanel, BorderLayout.CENTER); 
} 
0

我得到了這個工作,沒有z索引問題通過試錯。

讓呼叫X它具有的BorderLayout
讓我們稱之爲Y,它是目前佔用BorderLayout.Center
Component讓呼叫z中的JPanel中的中心位置,以取代JPanel

​​

我發現如果我試圖通過LayoutManager本身刪除現有的JPanel,它不起作用。相反,如果您使用JPanel的remove方法,那麼java文檔會說它會通知佈局removeLayoutComponent方法,並且似乎可以做到這一點。