如何添加 JLabel 数组



我不知道该怎么办。请帮助我

import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import java.util.*;
    public class Sample{
    static JLabel label[];
    static int count = 0;
      public static void main (String [] args){
      JFrame frame = new JFrame("Sample");
      JTextField tf = new JTextField(10);
      JButton bt = new JButton("Okay");
      frame.setSize(800,600);
      frame.setLayout(new FlowLayout());
      frame.setVisible(true);
      frame.add(tf);
      frame.add(bt);

      bt.addActionListener(new ActionListener(){
        @Override
        public void actionPerformed(ActionEvent ae){
          int sum = count++;
          String getTF = tf.getText();
          label[count] = new JLabel(getTF);
        }
    });
      }
}

它说NullPointerException。如何将getTF添加到label[]?我很困惑,我找不到正确的答案,有人可能对我有东西。

您尚未初始化数组:

static JLabel label[];   // "label" reference is null

您需要使用实际的数组对象对其进行初始化,例如

static JLabel label[] = new JLabel[10];

但是,这将具有固定的数组大小(在本例中为 10)。您将无法向该数组添加超过 10 个元素。您应该改用一个动态增长的数组ArrayList

static List<JLabel> label = new ArrayList<>();

然后添加您的新标签,例如

label.add(new JLabel(getTF));

除此之外,您应该仅在绝对必要时使用static字段 - 最好创建应用程序类的实例并使字段非静态。

您还应该删除通配符导入(如 java.util.* ),并且只导入您需要的类和接口(如 java.util.Listjava.util.ArrayList )。否则,您可能会遇到名称冲突(例如java.awt.Listjava.util.List之间)

最新更新