2011-03-13 56 views
0

好吧我有一個JPanel(我使用的是NetBeans和swing),我想製作一個副本並在另一個選項卡中使用它,這意味着它使用與其他面板相同的佈局,但我不想做一個深層副本。因爲如果我在更改一個版本時對其進行深層複製,則會更改另一個版本。有沒有什麼辦法,只是做的副本是什麼樣子,而無需將關係到原來的有沒有辦法讓一個JPanel的非深層副本

回答

3

看來你誤解這個字「深拷貝」 - 深副本只是有是效果綁定到原來的,而淺拷貝,這留下了這樣的關係。

無論如何,創建整個Swing組件樹的副本並不是真正的支持 - 它可以通過序列化完成。

但是,爲什麼不能簡單地使用創建原始JPanel的相同代碼(包含其中的組件)並創建一個新代碼?

+0

對不起,你的話混淆了我的意思是一個沒有關係。我使用net beans的桌面應用程序功能。所以它正在爲我編碼。我試圖讓它做的事情是我有一個電話簿與每個人的標籤。我有一個模板選項卡,它有它應該看起來如此,如果他們添加一個新的聯繫人,它會創建一個新的選項卡與該模板。所以我正在尋找一種方法來製作該平板電腦的副本,以便他們可以使用添加功能多次 – Puresilence 2011-03-13 08:17:53

+1

Netbeans爲您的模板選項卡生成了一些代碼。如果該代碼尚未存在,請將其移入單獨的方法中,併爲每個要填充的選項卡調用一次。 – 2011-03-13 13:32:13

-1

實際上,您無法創建與原始綁定的Swing組件的副本。組件只能共享模型。

你可以製作一個克隆你的面板,這將是完全獨立的面板,不會綁定到原來的。

-1

你在Netbeans IDE中使用Matisse UI設計器嗎?然後,您可以選擇您設計的JPanel,將其複製到剪貼板並粘貼到其他表單中。

0

這裏是解決以下問題的方法,無需使用JPanels/JFrames的設計視圖進行編碼。

您可以在設計視圖中轉到Navigator,選擇所有JPanel組件並通過鍵入ctrl + a和ctrl + c來複制它們。然後創建另一個JPanel並在設計視圖中,只需將它們粘貼到ctrl + v。

結果:您將獲得具有相同屬性和值的所有組件相同的大小,尺寸和位置。執行此操作後,可以使用GUI窗體的屬性輕鬆更改所需內容。

相關問題