Я проектирую консоль калькулятора, которая будет принимать два значения, создайте новый экземпляр класса AdditionProblem, который вернет массивы JLabel из 2 слагаемых проблемы, суммы и сумм переносится с каждого места (это показывает работу). У меня есть пользовательский класс, который расширяет JPanel и ArrayList JPanels, которые представляют каждую строку проблемы Solved после нажатия кнопки добавления. Класс AdditionProblem работает отлично, а также класс Main. Когда нажата кнопка добавления после того, как я создал класс консоли для отображения ответа, я получаю исключение нулевого указателя в строке 44 «row.add (новый JPanel)». Если вам нужно увидеть остальную часть моего кода, сообщите мне об этом, и я опубликую его, но чтобы сэкономить время, я просто опубликую класс Console, поскольку другие классы работают правильно, пока я не переместил код в этот класс.NullPointerException с ArrayList <JPanel> Калькулятор GUI
package Main;
import java.awt.Color;
import java.awt.Dimension;
import java.util.ArrayList;
import javax.swing.BoxLayout;
import javax.swing.JLabel;
import javax.swing.JPanel;
import Aritmathic.AdditionProblem;
public class Console extends JPanel {
private int width = 230, height = 260;
private ArrayList<JPanel> rows;
private ArrayList<JLabel> columns;
private void init(){
this.setPreferredSize(new Dimension(width, height));
this.setBackground(Color.WHITE);
this.setLayout(new BoxLayout(this, BoxLayout.Y_AXIS));
}
public Console(){
init();
}
public void printAnswer(AdditionProblem problem){
int rowIndex = 0;
JLabel[] sumLabels = problem.getSumLabels();
JLabel[] addend1Labels = problem.getAddend1Labels();
JLabel[] addend2Labels = problem.getAddend2Labels();
JLabel[] carriedLabels = problem.getCarriedLabels();
rows.add(new JPanel());
for(int i = 0; i < carriedLabels.length; i++){
rows.get(rowIndex).add(carriedLabels[i]);
}
rowIndex++;
rows.add(new JPanel());
for(int i = 0; i < addend1Labels.length; i++){
rows.get(rowIndex).add(addend1Labels[i]);
}
rowIndex++;
rows.add(new JPanel());
for(int i = 0; i < addend2Labels.length; i++){
rows.get(rowIndex).add(addend2Labels[i]);
}
rowIndex++;
rows.add(new JPanel());
for(int i = 0; i < sumLabels.length; i++){
rows.get(rowIndex).add(new JLabel("__"));
}
rowIndex++;
rows.add(new JPanel());
for(int i = 0; i < sumLabels.length; i++){
rows.get(rowIndex).add(sumLabels[i]);
}
for(int i = 0; i < rows.size(); i++){
this.add(rows.get(i));
}
}
}
Ой, вау, я чувствую себя немым ха-ха, спасибо! –
Упростите мой вопрос, чтобы я мог поддержать ваш ответ: D –