2012-10-22 16 views
1

我有一個列表框和一個字符串列表。根據所選字符串,我需要在下面顯示一組文本框。我的方法是爲每組文本框創建一個JPanel,然後將所有這些JPanel放入卡片佈局中。當用戶選擇一個特定字符串時,我將翻轉卡片佈局以顯示帶有文本框的相應面板。 但是,我不想先手動創建所有面板,因爲用戶可能無法選擇幾個列表值。因此,只有當用戶選擇列表值時,我想檢查卡片佈局是否已添加此卡片(或面板),如果沒有,則創建新面板(帶有文本框)並將其添加到卡片佈局。懶惰初始化 - 測試CardLayout是否添加了特定的面板

但是我沒有看到CardLayout類中的任何API,它讓我測試一個特定面板是否已添加到卡布局。只有

無效addLayoutComponent方法(字符串名稱,組件comp)

和這並不返回任何測試面板的卡laout的成功增加。

我該怎麼做?

回答

4

有一個Hashtable(甚至不是HashMap)由CardLayout佈局管理器使用,但這隻在內部使用,不暴露於外部。

這裏有2級可能的解決方案:

  1. 你可以保留獨立的HashMap<String, JPanel>佔已創建的面板。
  2. 您可以保留JPanel參考列表並檢查&如果在添加到接收容器之前null實例化。
+0

我想我會採用方法1.謝謝。 –