gpt4 book ai didi

java - ArrayList 计算器 GUI 出现 NullPointerException

转载 作者:行者123 更新时间:2023-11-30 07:00:25 25 4
gpt4 key购买 nike

我正在设计一个计算器控制台,它将接受两个值,创建一个类 AdditionProblem 的新实例,它将返回问题的 2 个加数的 JLabel 数组、总和以及从每个位置携带的数量(它展示作品)。我有一个扩展 JPanel 的自定义类和一个 JPanel 的 ArrayList,它们代表单击添加按钮后已解决问题的每一行。 AdditionProblem 类和 Main 类一样工作得很好。在我创建控制台类以显示答案后单击添加按钮时,我在第 44 行“row.add(new JPanel)”上收到空指针异常。如果您需要查看我的其余代码,请告诉我,我会发布它,但为了节省时间,我将只发布 Console 类,因为在我将代码移至此类之前,其他类一直在正常工作。

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

}

最佳答案

初始化ArrayList<>()在构造函数中。

public Console(){
rows = new ArrayList<JPanel>();
columns = new ArrayList<JLabel>();
init();
}

关于java - ArrayList<JPanel> 计算器 GUI 出现 NullPointerException,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30611495/

25 4 0