java.lang.NullPointerException при попытке установить текст в JButton

-4

Я работаю над созданием периодической таблицы для проекта компьютерной науки. Я пытаюсь написать код, который создает массив кнопок. Текст этих кнопок определяется путем извлечения имени соответствующего элемента в моем другом массиве. После того, как это будет завершено, в зависимости от того, какой тип элемента он есть, кнопка окрашивается соответствующим образом. Программа компилируется отлично, но она не запускается. Вот мой код:

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);
}
}

После нажатия кнопки RUN я получаю эту ошибку:

java.lang.NullPointerException
at TestLayout.main(TestLayout.java:136)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
at java.lang.reflect.Method.invoke(Unknown Source)
at edu.rice.cs.drjava.model.compiler.JavacCompiler.runCommand(JavacCompiler.java:272)

Какие-либо предложения??

спросил(а) 2014-06-08T03:04:00+04:00 6 лет, 3 месяца назад
0
57

Вы хотите:

JButton[i] = new JButton();

этот код создает новую jButton массива JButton[i]

ответил(а) 2014-06-08T03:28:00+04:00 6 лет, 3 месяца назад
57

JButton[] buttonArray = new JButton[40];

Это создает пустой массив кнопок, что означает, что каждый элемент имеет значение null. Сначала вам нужно заполнить массив, установив каждый элемент на что-то вроде new JButton() а затем задайте его свойства.

ответил(а) 2014-06-08T03:14:00+04:00 6 лет, 3 месяца назад
Ваш ответ
Введите минимум 50 символов
Чтобы , пожалуйста,
Выберите тему жалобы:

Другая проблема