我不知道该怎么办。请帮助我
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.List
和 java.util.ArrayList
)。否则,您可能会遇到名称冲突(例如java.awt.List
和java.util.List
之间)