1

私はJLabelの配列を持っています、それらは機能しているようです。System.out.print(days [index]);を実行した場合 含まれている実際の情報を取得し、ラベルが存在して機能します。

パネルの任意のインデックスにラベルを追加しようとすると、nullポインター例外が発生しますが、その理由がわかりません。

public class DrawCalendar extends JPanel{

private JLabel month = new JLabel("Month");
private JLabel[] days = {
    new JLabel("Sunday"),
    new JLabel("Monday"),
    new JLabel("Tuesday"),
    new JLabel("Wednesday"),
    new JLabel("Thursday"),
    new JLabel("Friday"),
    new JLabel("Saturday")
};
    private JPanel dayBoxes;
    private JPanel topLabels;





    public DrawCalendar(int month){

        topLabels.add(days[1]);  //the NullPointerException caused here
        add(topLabels);

    }
}
4

2 に答える 2

1

topLabelsはインスタンス化されていません。タイプJPanelですが、JPanelになるまではJPanelではありません。

  topLabels = new JPanel();

それまではnullです。

于 2012-12-14T20:53:09.217 に答える
1

どこでprivate JPanel topLabels;初期化されますか?あなたはおそらく次のようなものが欲しいでしょう:

topLabels = new JPanel();

DrawCalendarのコンストラクターで、または宣言行で暗黙的に実行します。

private JPanel topLabels = new JPanel();
于 2012-12-14T20:55:53.987 に答える