2017-06-09 15 views
-1

こんにちは私は基本的に1人の消費者が1日に消費するカロリーの量に基づいて食事プランナーを作る場所に個人的なプロジェクトを始めました。私は初心者なので多分私にとっては難しい挑戦だと知っていますが、私はそれをすることができます!私はバックエンドを後で残しますが、今はUIで作業したいと思っていましたが、私はこのコードに問題があります。私は彼らが望む食事の数に基づいて、どのパネルがどれだけ出現するかということに基づいて、パネルでパネルのリストを作成したいと考えています。これについての洞察は非常に高く評価されます。Jpanelを使ったJava NullPointer例外

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

答えて

1
panel = new JPanel[mealsPerDay]; 

という記述は、単にパネルの与えられた数を保持することができる配列を作成します。

実際にパネルを作成するわけではありません。そのため、配列にインデックスを付けると、nullオブジェクトが取得されます。あなたの変数名とより記述すること、また

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

は、だからあなたのような何かを必要としています。 「パネル」は単一の構成要素を意味する。与えられた配列を表現することができれば、できるだけ少なくすることができます。それは "パネル"と呼ばれ、複数あることがわかります。

関連する問題