已經有StackOverflow上其中一個用戶問這樣的問題很多次......CardLayout與手動添加/刪除JPanels有什麼特別之處?
我有一個包含一個孩子
JPanel
主JPanel
。當用戶點擊 按鈕時,子JPanel
應更改爲不同的JPanel
。我如何 達到此目的。
通常情況下,用戶實際上已經試圖實現此問題,但無法使其工作。
每當我回答這個問題,我告訴他們做這樣的事情(簡言之)...
JPanel myFrame = new JPanel();
myFrame.remove(oldPanel);
myFrame.add(newPanel);
我認爲這是相當合理的答案,我個人已經在許多使用該我自己的Java項目沒有問題。然而,我總是會爲我的答案得到低價,而每個人都只是說「使用CardLayout
」。
所以我的問題是,爲什麼大家對CardLayout
如此着迷,以至於我的回答值得讚賞呢?爲什麼我應該選擇使用CardLayout
而不是使用上面的代碼添加/刪除面板?
作爲進一步的問題,你是否仍然建議CardLayout
有動態JPanel接口。例如,我的大多數程序都實現了一個自定義插件框架,其中可能有成百上千個JPanels
,但我只在實際需要時才加載和顯示面板。對於程序的正常使用,絕大多數面板永遠不會被加載或需要。對於這種情況,我的編碼方法是否是最好的解決方案,因爲據我所知CardLayout
會要求我實際創建JPanels
的全部,即使絕大多數永遠不會被使用?
我認爲你已經做了很好的工作,以建設性的方式表達你的問題。我希望它不會結束。 –
非常感謝 - 我故意試圖將其作爲一個有建設性的問題,並很高興得到一些好的反饋。 – wattostudios
*「但我只加載和顯示面板,因爲它們實際上是需要的。」*惰性實例化也可以與'CardLayout'一起使用,並且它支持數千個面板。 –