【问题标题】:Can I use the method if the object is held by an multidimensional array?如果对象由多维数组保存,我可以使用该方法吗?
【发布时间】:2023-03-19 12:01:01
【问题描述】:

我看到了一些非常相似的帖子,但没有找到合适的地方。

我在想这样的事情:

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

我尝试了类似的方法,但我无法使用 JTextField 或 JComboBox 的方法。如何根据那里的 1-index 实例化它?这可能吗?

【问题讨论】:

  • 您可能希望将组件存储在 Map 而不是数组中。
  • @assylias +1 获取更适用的数据结构
  • 一个类似的帖子有一个很好的解决方案:stackoverflow.com/questions/2172718/…
  • Map?.. 我还不是 Java 专家,所以让我看一下。感谢您的回复。

标签: java object jcombobox jtextfield multidimensional-array


【解决方案1】:

您需要先进行强制转换,然后才能访问特定于该类型的方法,因为 Java 将它们都视为 Object 的实例:

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

或者:

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

【讨论】:

  • 如果,我们假设在数组中它可以是任何时候的任何对象。所以我的选角不能是静态的,对吗?我还有什么其他方法可以解决这个问题?
【解决方案2】:

试试这个:

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

【讨论】:

    【解决方案3】:

    如果你确定它是什么,你拿出来就可以施放,像这样

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

    但是,与其使用Object[][],不如直接创建一个类?

    class UIWidgets {
        JTextField name;
        JComboBox gender;
    }
    

    【讨论】:

    • 如果,我们假设在数组中它可以是任何时候的任何对象。所以我的选角不能是静态的,对吗?一类?我真正想做的是传递这个 Object[][],无论内容是什么,然后创建它们。就像我说的那样,考虑到不同的可能性,我的选角不能保持不变。 (try catch 可以)但是还有其他方法可以解决这个问题吗?
    猜你喜欢
    • 1970-01-01
    • 2015-12-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-01-15
    相关资源
    最近更新 更多