我看到一些帖子很相似,但没有发现。如果对象被多维数组保存,我可以使用该方法吗?
我的想法是这样的:
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