2012-07-26 72 views
1

我看到一些帖子很相似,但沒有發現。如果對象被多維數組保存,我可以使用該方法嗎?

我的想法是這樣的:

Object[][] test = { 
      {"Name", new JTextField()}, 
      {"Gender", new JComboBox()} 
} 

我想是這樣的,但我不能使用的JTextField或者JComboBox時的方法。我如何實例化這取決於1索引?這可能嗎?

+1

您可能希望將組件存儲在Map而不是數組中。 – assylias 2012-07-26 16:08:51

+0

@assylias +1更適用的數據結構 – 2012-07-26 16:11:31

+0

一個類似的帖子,一個很好的解決方案:http://stackoverflow.com/questions/2172718/can-java-store-methods-in-arrays – applepie 2012-07-26 16:22:06

回答

2

你需要轉換之前,首先你可以訪問特定方法的類型,因爲Java的認爲他們都爲Object實例:

((JTextField)test[0][1]).CallMethodHere(); 

或者交替:

JTextField tf = (JTextField)test[0][1]; 
// do something with tf 
+0

如果我們假設在數組中它可以是任何時候的任何對象。所以我的鑄造不能是靜態的權利?我有什麼其他方式來解決這個問題? – oneofakind 2012-08-01 06:28:30

0

試試這個:

((JTextField) test[0][1]).setText("someText"); 
4

如果你確切地知道它是什麼,你可以在你把它拿出來時施放它,就像這樣

JComboBox box = (JComboBox)(test[1][1]); 
box.whatever(); 

但是,而不是使用Object[][],爲什麼不只是一個班?

class UIWidgets { 
    JTextField name; 
    JComboBox gender; 
} 
+0

如果我們假設在數組中它可以是任何時候的任何對象。所以我的鑄造不能是靜態的權利?一類?我真正想要做的就是傳遞這個Object [] [],可能的內容是什麼,然後創建它們。就像我說的,考慮到不同的可能性,我的鑄造不可能是恆定的。 (嘗試抓住可能),但有其他方法來解決這個問題嗎? – oneofakind 2012-08-01 06:30:38

相關問題