【发布时间】:2015-06-03 05:27:41
【问题描述】:
我正在设计一个计算器控制台,它将接受两个值,创建一个 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));
}
}
}
【问题讨论】:
标签: java arrays arraylist jpanel jlabel