我看到一些帖子很相似,但沒有發現。如果對象被多維數組保存,我可以使用該方法嗎?
我的想法是這樣的:
Object[][] test = {
{"Name", new JTextField()},
{"Gender", new JComboBox()}
}
我想是這樣的,但我不能使用的JTextField或者JComboBox時的方法。我如何實例化這取決於1索引?這可能嗎?
我看到一些帖子很相似,但沒有發現。如果對象被多維數組保存,我可以使用該方法嗎?
我的想法是這樣的:
Object[][] test = {
{"Name", new JTextField()},
{"Gender", new JComboBox()}
}
我想是這樣的,但我不能使用的JTextField或者JComboBox時的方法。我如何實例化這取決於1索引?這可能嗎?
你需要轉換之前,首先你可以訪問特定方法的類型,因爲Java的認爲他們都爲Object
實例:
((JTextField)test[0][1]).CallMethodHere();
或者交替:
JTextField tf = (JTextField)test[0][1];
// do something with tf
如果我們假設在數組中它可以是任何時候的任何對象。所以我的鑄造不能是靜態的權利?我有什麼其他方式來解決這個問題? – oneofakind 2012-08-01 06:28:30
試試這個:
((JTextField) test[0][1]).setText("someText");
如果你確切地知道它是什麼,你可以在你把它拿出來時施放它,就像這樣
JComboBox box = (JComboBox)(test[1][1]);
box.whatever();
但是,而不是使用Object[][]
,爲什麼不只是一個班?
class UIWidgets {
JTextField name;
JComboBox gender;
}
如果我們假設在數組中它可以是任何時候的任何對象。所以我的鑄造不能是靜態的權利?一類?我真正想要做的就是傳遞這個Object [] [],可能的內容是什麼,然後創建它們。就像我說的,考慮到不同的可能性,我的鑄造不可能是恆定的。 (嘗試抓住可能),但有其他方法來解決這個問題嗎? – oneofakind 2012-08-01 06:30:38
您可能希望將組件存儲在Map而不是數組中。 – assylias 2012-07-26 16:08:51
@assylias +1更適用的數據結構 – 2012-07-26 16:11:31
一個類似的帖子,一個很好的解決方案:http://stackoverflow.com/questions/2172718/can-java-store-methods-in-arrays – applepie 2012-07-26 16:22:06