Jpanel的Java空指针异常

Jpanel的Java空指针异常,java,swing,nullpointerexception,Java,Swing,Nullpointerexception,大家好,我开始了一个个人项目,我基本上会根据一个人每天为自己消耗多少卡路里来做一个膳食计划。我知道这对我来说可能是一个艰难的挑战,因为我是一个初学者,但我能做到!稍后我将离开后端,但现在我想处理UI,这段代码有问题。我想在一个小组中列出一个小组的列表,根据他们需要的食物数量来确定会出现多少个小组。对此有任何见解都将不胜感激 package mealplanner; import javax.swing.*; /** * Created by Usman on 6/8/2017. */ p

大家好,我开始了一个个人项目,我基本上会根据一个人每天为自己消耗多少卡路里来做一个膳食计划。我知道这对我来说可能是一个艰难的挑战,因为我是一个初学者,但我能做到!稍后我将离开后端,但现在我想处理UI,这段代码有问题。我想在一个小组中列出一个小组的列表,根据他们需要的食物数量来确定会出现多少个小组。对此有任何见解都将不胜感激

package mealplanner;

import javax.swing.*;

/**
 * Created by Usman on 6/8/2017.
 */
public class MealPlannerPanel extends JPanel {

    JPanel[] panel;
    int mealsPerDay, caloriesPerDay;
    public MealPlannerPanel(){
        mealsPerDay = Integer.parseInt(JOptionPane.showInputDialog("How many meals would you like per day?",null));
        caloriesPerDay = Integer.parseInt(JOptionPane.showInputDialog("What is your daily calorie aim?",null));
        panel = new JPanel[mealsPerDay];
        for(int i = 0; i < panel.length; i++){
            add(panel[i]);
        }
    }
    public static void main(String[] args){
        MealPlannerPanel planner = new MealPlannerPanel();
        JFrame frame = new JFrame("Meal Planner");
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        frame.getContentPane().add(planner);
        frame.pack();
        frame.setVisible(true);
    }
}
package-mealplanner;
导入javax.swing.*;
/**
*由乌斯曼于2017年6月8日创建。
*/
公共类MealPlannerPanel扩展了JPanel{
JPanel[]小组;
每日热量;
公共测量计划小组(){
mealsPerDay=Integer.parseInt(JOptionPane.showInputDialog(“您每天要吃多少顿饭?”,null));
caloriesPerDay=Integer.parseInt(JOptionPane.showInputDialog(“您的每日卡路里目标是什么?”,null));
面板=新JPanel[每日计量];
对于(int i=0;i
该语句只创建一个数组,该数组能够容纳给定数量的面板

它实际上并不创建面板(因此,当您索引到数组中时,您将得到一个空对象)

所以你需要一些类似的东西:

    for(int i = 0; i < panel.length; i++){
        JPanel onePanel = new JPanel();
        panel[i] = onePanel;
        add(panel[i]);
    }
for(int i=0;i
另外,变量名更具描述性。“面板”指单个组件。因为它是用来表示数组的,所以您至少可以将其称为“面板”,这样我们就知道不止一个

    for(int i = 0; i < panel.length; i++){
        JPanel onePanel = new JPanel();
        panel[i] = onePanel;
        add(panel[i]);
    }