在java中创建swing组件的数组,特别是JTextFields,并为每个组件赋予不同的属性

在java中创建swing组件的数组,特别是JTextFields,并为每个组件赋予不同的属性,java,swing,jtextfield,Java,Swing,Jtextfield,因此,我试图创建大量的JTextFields,并将它们用作二叉树程序中的节点。有没有办法创建JTextFields数组,比如: JTextField nodes[]=new JTextField[30]; 如果是这样的话,我该如何定义或赋予他们每个人不同的属性或我希望他们拥有的属性 谢谢 您可以这样做: JTextField[] jtfs = new JTextFields[] { // Define as many textfields as you want new JTe

因此,我试图创建大量的
JTextField
s,并将它们用作二叉树程序中的节点。有没有办法创建JTextFields数组,比如:

JTextField nodes[]=new JTextField[30];
如果是这样的话,我该如何定义或赋予他们每个人不同的属性或我希望他们拥有的属性

谢谢

您可以这样做:

JTextField[] jtfs = new JTextFields[] {
    // Define as many textfields as you want
    new JTextField(), // no args
    new JTextField("Initial text"), // text
    new JTextField(20), // 20 columns
    new JTextField("Initial text", 20), // text + columns number
    ...
}
JTextField[]fields=新的JTextField[30];

对于(int i=0;i您可以循环所有
JTextField
s,以此为例,您可以在
for
循环中添加
开关
,将每个
JTextField
的属性放入每个
案例中

从您对其他答案的评论中,我看到您希望
字段[3]
(或您想要的任何名称)更改列号并在其中写入“Apple”

下一次,你应该提供一个像我提供的那样的图片,这样我们就可以复制粘贴它,给你一个更好的方法。还有(可选)一个你想要的图片

这里我只使用了5个
JTextFields
来做一个例子,你可以拥有你想要的30个,试试看:)

下面的代码生成此输出:

import java.awt.*;
导入javax.swing.*;
公共类ArrayOfJTextField{
JFrame框架;
JPanel窗格;
JTextField字段[];
ArrayOfJTextField(){
框架=新的JFrame(“框架测试”);
字段=新的JTextField[5];
容器pane2=frame.getContentPane();
pane2.setLayout(新的BoxLayout(frame.getContentPane(),BoxLayout.PAGE_轴));
for(int i=0;i
您是否尝试过
TextField节点[]=new JTextField[30]然后像普通数组一样访问?您可以访问它,但如果我尝试将其添加到面板中,则会出现错误。原因是我没有单独定义它。我不知道首先该如何定义它。例如,为其设置大小、输入文本等。它通过way1为我提供nullPointerException。使用get/putClientProperty,2。二叉树中的节点-你可以将ClientProperty与无数个参数相乘,它是可设置的,可伸缩的。如果我想让节点[3]命名为“apple”,并更改其大小或维度,那么这将如何工作?你能给我解释一下吗?还是我把行和列搞混了?在这种情况下,列的大小取决于数组的大小?您可以像这样选择第四个文本字段:
节点[3]
JTextField[] fields = new JTextField[30];
for(int i = 0; i<fields.length; i++){
    fields = new JTextField();
}

//then you can access them and modify them as normal.
fields[3].setColumns(5);
fields[3].setText("apples");
import java.awt.*;
import javax.swing.*;
public class ArrayOfJTextField {
    JFrame frame;
    JPanel pane;
    JTextField fields[];
    ArrayOfJTextField () {
        frame = new JFrame("Frame Test");
        fields = new JTextField[5];
        Container pane2 = frame.getContentPane();
        pane2.setLayout(new BoxLayout(frame.getContentPane(), BoxLayout.PAGE_AXIS));

        for(int i = 0; i < fields.length; i++) {
            pane = new JPanel(new FlowLayout());
            fields[i] = new JTextField ("This is field " + (i + 1)); //You missed to do this and that's why you were getting a NPE
            if (i == 3) {
                fields[i].setColumns(10);
                fields[i].setText("Apple");
            } else {
                fields[i].setColumns(5);
            }
            pane.add(new JLabel("Label " + (i +1)));
            pane.add(fields[i]);
            frame.add(pane);
        }

        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        frame.pack();
        frame.setVisible(true);
    }

    public static void main (String args[]) {
        new ArrayOfJTextField();
    }
}