2011-04-21 62 views
0

我有三個選項卡,第一個選項卡包含一個組件,第二個另一個組件,第三個選項卡包含第一個和第二個選項卡中的兩個組件。 在我的第三個選項卡上,兩個組件都不顯示。我必須對第一個和第二個組件進行克隆,才能在第三個標籤上使用它?如果我的組件的某些屬性更改會怎麼樣?帶有幾次同一面板的選項卡式窗格

回答

1

正如其他人所述,Swing JComponent不能添加到多個其他JComponent(其父母)。

如果您關注的是共享組件的內容,那麼你通常有一個容易的選擇:因爲Swing組件是基於MVC ,他們都有一個型號,你可以幾個JComponent S之間共享。如果要同步其他屬性(

JTextField field1 = new JTextField(); 
JTextField field2 = new JTextField(); 

field2.setDocument(field1.getDocument()); 

現在:

例如,JTextComponentJTextFieldJTextAreaJTextComponent S)擁有Document它的模型,這Document可以共享,如下面的代碼片段例如,列數爲JTextField),則必須按照其他人的建議使用PropertyChangeListener

0

是的,任何擺動組件只能添加到一個容器中。

0

在每個選項卡上,您應該有單獨的組件,使用偵聽器可以操縱這些組件的屬性。

爲了解決問題,這樣你應該熟悉MVC設計模式,

1

Swing組件只能有一個家長在同一時間。所以如果你試圖將一個組件的一個實例添加到多個容器中,這是行不通的。

因此,您必須爲每個要添加到的容器創建組件的實例。

1

如果你想實現這一點。您可以執行以下步驟 - 添加選項卡列表 - 每當選中選項卡時,您可以添加需要顯示在選定選項卡面板中的組件並顯示它。 (即無論何時Tabpanel正在顯示,我們將重置組件的父級詳細信息)

+0

完美適合我,簡單快捷。 – Sheepy 2012-03-19 15:32:51

相關問題