尝试在JButton上设置文本时发生java.lang.NullPointerException
我一直在为一个计算机科学项目制作元素周期表。我正在尝试编写一个代码来创建一个按钮数组。这些按钮上的文本是通过检索我的另一个数组中对应元素的按钮名称来确定的。完成此操作后,根据元件类型,按钮将相应地着色。该程序编译得很好,但无法运行。这是我的密码:尝试在JButton上设置文本时发生java.lang.NullPointerException,java,arrays,nullpointerexception,null,element,Java,Arrays,Nullpointerexception,Null,Element,我一直在为一个计算机科学项目制作元素周期表。我正在尝试编写一个代码来创建一个按钮数组。这些按钮上的文本是通过检索我的另一个数组中对应元素的按钮名称来确定的。完成此操作后,根据元件类型,按钮将相应地着色。该程序编译得很好,但无法运行。这是我的密码: BufferedReader reader = null; ElementsTest[] element = new ElementsTest[40]; try { File file = new File("Ele
BufferedReader reader = null;
ElementsTest[] element = new ElementsTest[40];
try {
File file = new File("Elements 41-80.txt");
reader = new BufferedReader(new FileReader(file));
for (int counter = 0 ; counter < 40 ; counter++)
{
String name = reader.readLine();
int atomicNum = counter + 1;
String atomicWeight = reader.readLine();
String elementSymbol = reader.readLine();
String elementCharge = reader.readLine();
String fullElectronConfig = reader.readLine();
String shortElectronConfig = reader.readLine();
String elementState = reader.readLine();
String elementType = reader.readLine();
String density = reader.readLine();
String meltingPoint = reader.readLine();
String boilingPoint = reader.readLine();
String emptyLine = reader.readLine();
element[counter] = new ElementsTest (name, atomicNum, atomicWeight, elementSymbol, elementCharge, fullElectronConfig, shortElectronConfig, elementState, elementType, density, meltingPoint, boilingPoint);
}
} catch (IOException e) {
e.printStackTrace();
}
JButton[] buttonArray = new JButton[40];
for (int counter2 = 0 ; counter2 < 40 ; counter2++)
{
String currentSymbol = element[counter2].getElementSymbol();
buttonArray[counter2].setText(currentSymbol);
if (element[counter2].getElementType().equals("Metal"))
{
buttonArray[counter2].setBackground(Color.ORANGE);
buttonArray[counter2].setOpaque(true);
buttonArray[counter2].setBorderPainted(false);
}
if (element[counter2].getElementType().equals("Non-Metal"))
{
buttonArray[counter2].setBackground(Color.GRAY);
buttonArray[counter2].setOpaque(true);
buttonArray[counter2].setBorderPainted(false);
}
if (element[counter2].getElementType().equals("Noble Gas"))
{
buttonArray[counter2].setBackground(Color.BLACK);
buttonArray[counter2].setOpaque(true);
buttonArray[counter2].setBorderPainted(false);
}
if (element[counter2].getElementType().equals("Transition Metal"))
{
buttonArray[counter2].setBackground(Color.GREEN);
buttonArray[counter2].setOpaque(true);
buttonArray[counter2].setBorderPainted(false);
}
if (element[counter2].getElementType().equals("Lanthanide"))
{
buttonArray[counter2].setBackground(Color.YELLOW);
buttonArray[counter2].setOpaque(true);
buttonArray[counter2].setBorderPainted(false);
}
if (element[counter2].getElementType().equals("Alkali Metal"))
{
buttonArray[counter2].setBackground(Color.RED);
buttonArray[counter2].setOpaque(true);
buttonArray[counter2].setBorderPainted(false);
}
if (element[counter2].getElementType().equals("Alkaline Earth Metal"))
{
buttonArray[counter2].setBackground(Color.BLUE);
buttonArray[counter2].setOpaque(true);
buttonArray[counter2].setBorderPainted(false);
}
if (element[counter2].getElementType().equals("Halogen"))
{
buttonArray[counter2].setBackground(Color.MAGENTA);
buttonArray[counter2].setOpaque(true);
buttonArray[counter2].setBorderPainted(false);
}
else {
buttonArray[counter2].setOpaque(true);
}
}
有什么建议吗
JButton[] buttonArray = new JButton[40];
这将创建一个空按钮数组,这意味着每个元素都是null
。首先需要通过将每个元素设置为newjbutton()
之类的值来填充数组,然后设置其属性 您想要:
JButton[i] = new JButton();
这段代码创建了一个新的jbutton数组
jbutton[i]
谢谢!只是做了一个循环,将数组中的每个按钮初始化为一个新按钮,一切正常。
JButton[i] = new JButton();