【问题标题】:How can I create a JTextField array?如何创建 JTextField 数组?
【发布时间】:2014-10-11 18:50:05
【问题描述】:

我想为我的项目添加许多文本字段并决定只使用数组,因为所有这 22 个文本字段都具有相同的属性。

我试过JTextField txtFld[] = new JTextField[5];。它没有参数错误,但是当我尝试运行我的程序时,它会显示在控制台中

Exception in thread "main" java.lang.NullPointerException

我不想用

JTextField txtFld[] = new JTextField[]{
    new JTextField(10),
    ...
    ...
    ... // repeat the same code about 20 times
};

因为它占用了这么多行,而且文本字段无论如何都是相同的类型。我想做的只是一个长度相同的文本字段数组,只需使用mainPanel(txtFld[0]); ... mainPanel(txtFld[21]);

是否可以在一行代码中创建一个文本字段数组?

【问题讨论】:

  • 你考虑过使用循环吗? new JTextField[5] 所做的只是创建一个包含 空间 5 个文本字段的数组。但实际上并没有用任何 JTextField 对象填充它。使用new 关键字创建对象。所以如果你不想要 20 行代码,你可以通过循环将它缩短到 3 行。
  • 也许复习一下How to use ArraysHow to Use for Loops 会有所帮助

标签: java arrays swing nullpointerexception jtextfield


【解决方案1】:

由于我是 SO 新手,我可以回答这个问题,但这是一个重复的问题。我正在写答案:

目前还不清楚 FIELDS 是您的 JTextField 数组还是常量。如果是组件数组本身,在迭代时考虑使用 .length 数组字段。这减少了代码维护:

Container c = getContentPane();
JTextField[] fields = new JTextField[22];
for (int i = 0; i < 22; i++) {
   fields[i] = new JTextField("Your Value");
   //you can add any listener for JTextField here
   c.add(fields[i]);
}

注意大写变量用于 Java 命名约定下的常量。

答案复制自here。我无法将此问题标记为重复。

【讨论】:

    猜你喜欢
    • 2020-02-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-09-15
    • 2014-08-23
    • 2015-05-20
    • 1970-01-01
    相关资源
    最近更新 更多