2012-07-26 51 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

相关问题