NullPointerException

Hallo,

ich bin gerade dabei einen Kalender zu programmieren. Allerdings wird bei jedem Ausführen der einzelnen Plus/Minus Methoden eine NullPointerException ausgeworfen. Woran liegt das denn?
Weiterhin gibt es Probleme mit dem Schaltjahr. Auch in Nicht-Schaltjahren gibt es einen 29.2 , wenn man vom 30.März einen Monat nach unten wechselt.

Woran liegt das bzw. wie kann ich es beheben?
Weitere Fehler dürfen natürlich gerne genannt und korrigiert werden.

Vielen Dank für eure Hilfe,

Christopher

Hier die Klassen:

Calendar.java
Java:
package mycalendar;

import javax.swing.JTextField;

/**
 *
 * @author christopherbucklein
 */
public class Calendar extends javax.swing.JFrame {

    Time time;
    Writer writer;
    JTextField[] timeFields;

    public Calendar() {
        initComponents();
        time = new Time(dayLabel, monthLabel, yearLabel);

        timeFields = new JTextField[8];
        timeFields[0] = termin1;
        timeFields[1] = termin2;
        timeFields[2] = termin3;
        timeFields[3] = termin4;
        timeFields[4] = termin5;
        timeFields[5] = termin6;
        timeFields[6] = termin7;
        timeFields[7] = termin8;
    }
    @SuppressWarnings("unchecked")
    // <editor-fold defaultstate="collapsed" desc="Generated Code">                          
    private void initComponents() {

        dayLabel = new javax.swing.JLabel();
        yearLabel = new javax.swing.JLabel();
        monthLabel = new javax.swing.JLabel();
        dayPlusLabel = new javax.swing.JLabel();
        monthPlusLabel = new javax.swing.JLabel();
        yearPlusLabel = new javax.swing.JLabel();
        dayMinusLabel = new javax.swing.JLabel();
        monthMinusLabel = new javax.swing.JLabel();
        yearMinusLabel = new javax.swing.JLabel();
        uhrzeitLabel1 = new javax.swing.JLabel();
        uhrzeitLabel2 = new javax.swing.JLabel();
        uhrzeitLabel3 = new javax.swing.JLabel();
        uhrzeitLabel4 = new javax.swing.JLabel();
        uhrzeitLabel5 = new javax.swing.JLabel();
        uhrzeitLabel6 = new javax.swing.JLabel();
        uhrzeitLabel7 = new javax.swing.JLabel();
        uhrzeitLabel8 = new javax.swing.JLabel();
        termin1 = new javax.swing.JTextField();
        termin2 = new javax.swing.JTextField();
        termin3 = new javax.swing.JTextField();
        termin4 = new javax.swing.JTextField();
        termin5 = new javax.swing.JTextField();
        termin6 = new javax.swing.JTextField();
        termin7 = new javax.swing.JTextField();
        termin8 = new javax.swing.JTextField();
        speichernButton = new javax.swing.JButton();

        setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);

        dayLabel.setBackground(new java.awt.Color(255, 255, 255));
        dayLabel.setFont(new java.awt.Font("Lucida Grande", 1, 48)); // NOI18N
        dayLabel.setText("1");
        dayLabel.setAlignmentX(1.0F);
        dayLabel.setBorder(javax.swing.BorderFactory.createLineBorder(new java.awt.Color(0, 0, 0)));
        dayLabel.setOpaque(true);

        yearLabel.setBackground(new java.awt.Color(255, 255, 255));
        yearLabel.setFont(new java.awt.Font("Lucida Grande", 1, 48));
        yearLabel.setText("2010");
        yearLabel.setAlignmentX(1.0F);
        yearLabel.setBorder(javax.swing.BorderFactory.createLineBorder(new java.awt.Color(0, 0, 0)));
        yearLabel.setOpaque(true);

        monthLabel.setBackground(new java.awt.Color(255, 255, 255));
        monthLabel.setFont(new java.awt.Font("Lucida Grande", 1, 48));
        monthLabel.setText("1");
        monthLabel.setAlignmentX(1.0F);
        monthLabel.setBorder(javax.swing.BorderFactory.createLineBorder(new java.awt.Color(0, 0, 0)));
        monthLabel.setOpaque(true);

        dayPlusLabel.setBackground(new java.awt.Color(255, 255, 255));
        dayPlusLabel.setText("           +");
        dayPlusLabel.setBorder(javax.swing.BorderFactory.createLineBorder(new java.awt.Color(0, 0, 0)));
        dayPlusLabel.setOpaque(true);
        dayPlusLabel.addMouseListener(new java.awt.event.MouseAdapter() {
            public void mouseClicked(java.awt.event.MouseEvent evt) {
                dayPlusLabelMouseClicked(evt);
            }
        });

        monthPlusLabel.setBackground(new java.awt.Color(255, 255, 255));
        monthPlusLabel.setText("            +");
        monthPlusLabel.setBorder(javax.swing.BorderFactory.createLineBorder(new java.awt.Color(0, 0, 0)));
        monthPlusLabel.setOpaque(true);
        monthPlusLabel.addMouseListener(new java.awt.event.MouseAdapter() {
            public void mouseClicked(java.awt.event.MouseEvent evt) {
                monthPlusLabelMouseClicked(evt);
            }
        });

        yearPlusLabel.setBackground(new java.awt.Color(255, 255, 255));
        yearPlusLabel.setText("              +");
        yearPlusLabel.setBorder(javax.swing.BorderFactory.createLineBorder(new java.awt.Color(0, 0, 0)));
        yearPlusLabel.setOpaque(true);
        yearPlusLabel.addMouseListener(new java.awt.event.MouseAdapter() {
            public void mouseClicked(java.awt.event.MouseEvent evt) {
                yearPlusLabelMouseClicked(evt);
            }
        });

        dayMinusLabel.setBackground(new java.awt.Color(255, 255, 255));
        dayMinusLabel.setText("            -");
        dayMinusLabel.setBorder(javax.swing.BorderFactory.createLineBorder(new java.awt.Color(0, 0, 0)));
        dayMinusLabel.setOpaque(true);
        dayMinusLabel.addMouseListener(new java.awt.event.MouseAdapter() {
            public void mouseClicked(java.awt.event.MouseEvent evt) {
                dayMinusLabelMouseClicked(evt);
            }
        });

        monthMinusLabel.setBackground(new java.awt.Color(255, 255, 255));
        monthMinusLabel.setText("            -");
        monthMinusLabel.setBorder(javax.swing.BorderFactory.createLineBorder(new java.awt.Color(0, 0, 0)));
        monthMinusLabel.setOpaque(true);
        monthMinusLabel.addMouseListener(new java.awt.event.MouseAdapter() {
            public void mouseClicked(java.awt.event.MouseEvent evt) {
                monthMinusLabelMouseClicked(evt);
            }
        });

        yearMinusLabel.setBackground(new java.awt.Color(255, 255, 255));
        yearMinusLabel.setText("              -");
        yearMinusLabel.setBorder(javax.swing.BorderFactory.createLineBorder(new java.awt.Color(0, 0, 0)));
        yearMinusLabel.setOpaque(true);
        yearMinusLabel.addMouseListener(new java.awt.event.MouseAdapter() {
            public void mouseClicked(java.awt.event.MouseEvent evt) {
                yearMinusLabelMouseClicked(evt);
            }
        });

        uhrzeitLabel1.setFont(new java.awt.Font("Lucida Grande", 0, 18)); // NOI18N
        uhrzeitLabel1.setText("0-3");

        uhrzeitLabel2.setFont(new java.awt.Font("Lucida Grande", 0, 18)); // NOI18N
        uhrzeitLabel2.setText("3-6");

        uhrzeitLabel3.setFont(new java.awt.Font("Lucida Grande", 0, 18)); // NOI18N
        uhrzeitLabel3.setText("6-9");

        uhrzeitLabel4.setFont(new java.awt.Font("Lucida Grande", 0, 18)); // NOI18N
        uhrzeitLabel4.setText("12-15");

        uhrzeitLabel5.setFont(new java.awt.Font("Lucida Grande", 0, 18)); // NOI18N
        uhrzeitLabel5.setText("9-12");

        uhrzeitLabel6.setFont(new java.awt.Font("Lucida Grande", 0, 18)); // NOI18N
        uhrzeitLabel6.setText("15-18");

        uhrzeitLabel7.setFont(new java.awt.Font("Lucida Grande", 0, 18)); // NOI18N
        uhrzeitLabel7.setText("18-21");

        uhrzeitLabel8.setFont(new java.awt.Font("Lucida Grande", 0, 18)); // NOI18N
        uhrzeitLabel8.setText("21-24");

        speichernButton.setText("Änderungen speichern");
        speichernButton.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                speichernButtonActionPerformed(evt);
            }
        });

        org.jdesktop.layout.GroupLayout layout = new org.jdesktop.layout.GroupLayout(getContentPane());
        getContentPane().setLayout(layout);
        layout.setHorizontalGroup(
            layout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING)
            .add(layout.createSequentialGroup()
                .add(74, 74, 74)
                .add(layout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING)
                    .add(layout.createSequentialGroup()
                        .add(layout.createParallelGroup(org.jdesktop.layout.GroupLayout.TRAILING)
                            .add(uhrzeitLabel4)
                            .add(uhrzeitLabel7)
                            .add(uhrzeitLabel2)
                            .add(uhrzeitLabel5)
                            .add(uhrzeitLabel3)
                            .add(uhrzeitLabel1)
                            .add(uhrzeitLabel6)
                            .add(uhrzeitLabel8))
                        .add(33, 33, 33)
                        .add(layout.createParallelGroup(org.jdesktop.layout.GroupLayout.TRAILING, false)
                            .add(org.jdesktop.layout.GroupLayout.LEADING, termin1, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, 276, Short.MAX_VALUE)
                            .add(org.jdesktop.layout.GroupLayout.LEADING, termin2, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, 276, Short.MAX_VALUE)
                            .add(org.jdesktop.layout.GroupLayout.LEADING, termin3, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, 276, Short.MAX_VALUE)
                            .add(org.jdesktop.layout.GroupLayout.LEADING, termin4, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, 276, Short.MAX_VALUE)
                            .add(org.jdesktop.layout.GroupLayout.LEADING, termin5, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, 276, Short.MAX_VALUE)
                            .add(org.jdesktop.layout.GroupLayout.LEADING, termin6, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, 276, Short.MAX_VALUE)
                            .add(org.jdesktop.layout.GroupLayout.LEADING, termin7, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, 276, Short.MAX_VALUE)
                            .add(org.jdesktop.layout.GroupLayout.LEADING, termin8, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, 276, Short.MAX_VALUE)
                            .add(org.jdesktop.layout.GroupLayout.LEADING, speichernButton, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
                        .addContainerGap())
                    .add(layout.createSequentialGroup()
                        .add(layout.createParallelGroup(org.jdesktop.layout.GroupLayout.TRAILING, false)
                            .add(dayPlusLabel, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
                            .add(org.jdesktop.layout.GroupLayout.LEADING, dayMinusLabel, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
                            .add(org.jdesktop.layout.GroupLayout.LEADING, dayLabel, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE, 112, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE))
                        .add(layout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING)
                            .add(layout.createSequentialGroup()
                                .add(12, 12, 12)
                                .add(layout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING)
                                    .add(monthLabel, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE, 112, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE)
                                    .add(monthPlusLabel, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, 112, Short.MAX_VALUE)))
                            .add(layout.createSequentialGroup()
                                .addPreferredGap(org.jdesktop.layout.LayoutStyle.UNRELATED)
                                .add(monthMinusLabel, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, 110, Short.MAX_VALUE)))
                        .addPreferredGap(org.jdesktop.layout.LayoutStyle.UNRELATED)
                        .add(layout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING)
                            .add(yearLabel)
                            .add(yearPlusLabel, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, 130, Short.MAX_VALUE)
                            .add(yearMinusLabel, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, 130, Short.MAX_VALUE))
                        .add(76, 76, 76))))
        );
        layout.setVerticalGroup(
            layout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING)
            .add(layout.createSequentialGroup()
                .add(30, 30, 30)
                .add(layout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING)
                    .add(layout.createSequentialGroup()
                        .add(monthPlusLabel)
                        .addPreferredGap(org.jdesktop.layout.LayoutStyle.UNRELATED)
                        .add(monthLabel, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE, 112, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE))
                    .add(layout.createSequentialGroup()
                        .add(layout.createParallelGroup(org.jdesktop.layout.GroupLayout.BASELINE)
                            .add(dayPlusLabel)
                            .add(yearPlusLabel))
                        .addPreferredGap(org.jdesktop.layout.LayoutStyle.UNRELATED)
                        .add(layout.createParallelGroup(org.jdesktop.layout.GroupLayout.BASELINE)
                            .add(dayLabel, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE, 112, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE)
                            .add(yearLabel, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE, 112, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE))
                        .add(18, 18, 18)
                        .add(layout.createParallelGroup(org.jdesktop.layout.GroupLayout.BASELINE)
                            .add(dayMinusLabel)
                            .add(monthMinusLabel)
                            .add(yearMinusLabel))))
                .add(18, 18, 18)
                .add(layout.createParallelGroup(org.jdesktop.layout.GroupLayout.BASELINE)
                    .add(uhrzeitLabel1)
                    .add(termin1, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE))
                .addPreferredGap(org.jdesktop.layout.LayoutStyle.RELATED)
                .add(layout.createParallelGroup(org.jdesktop.layout.GroupLayout.BASELINE)
                    .add(termin2, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE)
                    .add(uhrzeitLabel2))
                .addPreferredGap(org.jdesktop.layout.LayoutStyle.RELATED)
                .add(layout.createParallelGroup(org.jdesktop.layout.GroupLayout.BASELINE)
                    .add(uhrzeitLabel3)
                    .add(termin3, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE))
                .addPreferredGap(org.jdesktop.layout.LayoutStyle.RELATED)
                .add(layout.createParallelGroup(org.jdesktop.layout.GroupLayout.BASELINE)
                    .add(uhrzeitLabel5)
                    .add(termin4, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE))
                .addPreferredGap(org.jdesktop.layout.LayoutStyle.RELATED)
                .add(layout.createParallelGroup(org.jdesktop.layout.GroupLayout.BASELINE)
                    .add(termin5, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE)
                    .add(uhrzeitLabel4))
                .addPreferredGap(org.jdesktop.layout.LayoutStyle.RELATED)
                .add(layout.createParallelGroup(org.jdesktop.layout.GroupLayout.BASELINE)
                    .add(uhrzeitLabel6)
                    .add(termin6, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE))
                .addPreferredGap(org.jdesktop.layout.LayoutStyle.RELATED)
                .add(layout.createParallelGroup(org.jdesktop.layout.GroupLayout.BASELINE)
                    .add(termin7, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE)
                    .add(uhrzeitLabel7))
                .addPreferredGap(org.jdesktop.layout.LayoutStyle.RELATED)
                .add(layout.createParallelGroup(org.jdesktop.layout.GroupLayout.TRAILING)
                    .add(uhrzeitLabel8)
                    .add(termin8, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE))
                .addPreferredGap(org.jdesktop.layout.LayoutStyle.RELATED, 20, Short.MAX_VALUE)
                .add(speichernButton))
        );

        pack();
    }// </editor-fold>                        

    private void dayPlusLabelMouseClicked(java.awt.event.MouseEvent evt) {                                          
        int[] array = time.dayPlusMethod();
        dayLabel.setText(array[0]+"");
        monthLabel.setText(array[1]+"");
        yearLabel.setText(array[2]+"");
        writer.read(dayLabel.getText(), monthLabel.getText(), yearLabel.getText(), timeFields);
    }                                         

    private void monthPlusLabelMouseClicked(java.awt.event.MouseEvent evt) {                                            
        int[] array = time.monthPlusMethod();
        dayLabel.setText(array[0]+"");
        monthLabel.setText(array[1]+"");
        yearLabel.setText(array[2]+"");
        writer.read(dayLabel.getText(), monthLabel.getText(), yearLabel.getText(), timeFields);
    }                                           

    private void yearPlusLabelMouseClicked(java.awt.event.MouseEvent evt) {                                           
        int jahr = time.yearPlusMethod();
        yearLabel.setText(jahr+"");
        writer.read(dayLabel.getText(), monthLabel.getText(), yearLabel.getText(), timeFields);
    }                                          

    private void dayMinusLabelMouseClicked(java.awt.event.MouseEvent evt) {                                           
        int[] array = time.dayMinusMethod();
        dayLabel.setText(array[0]+"");
        monthLabel.setText(array[1]+"");
        yearLabel.setText(array[2]+"");
        writer.read(dayLabel.getText(), monthLabel.getText(), yearLabel.getText(), timeFields);
    }                                          

    private void monthMinusLabelMouseClicked(java.awt.event.MouseEvent evt) {                                             
        int[] array = time.monthMinusMethod();
        dayLabel.setText(array[0]+"");
        monthLabel.setText(array[1]+"");
        yearLabel.setText(array[2]+"");
        writer.read(dayLabel.getText(), monthLabel.getText(), yearLabel.getText(), timeFields);
    }                                            

    private void yearMinusLabelMouseClicked(java.awt.event.MouseEvent evt) {                                            
        int jahr = time.yearMinusMethod();
        yearLabel.setText(jahr+"");
        writer.read(dayLabel.getText(), monthLabel.getText(), yearLabel.getText(), timeFields);
    }                                           

    private void speichernButtonActionPerformed(java.awt.event.ActionEvent evt) {                                                
        writer = new Writer(termin1, termin2, termin3, termin4, termin5, termin6, termin7, termin8);
        writer.write(dayLabel.getText(), monthLabel.getText(), yearLabel.getText());
    }                                               

    /**
     * @param args the command line arguments
     */
    public static void main(String args[]) {
        java.awt.EventQueue.invokeLater(new Runnable() {

            public void run() {
                new Calendar().setVisible(true);
            }
        });
    }
    // Variables declaration - do not modify                     
    public javax.swing.JLabel dayLabel;
    private javax.swing.JLabel dayMinusLabel;
    private javax.swing.JLabel dayPlusLabel;
    public javax.swing.JLabel monthLabel;
    private javax.swing.JLabel monthMinusLabel;
    private javax.swing.JLabel monthPlusLabel;
    private javax.swing.JButton speichernButton;
    private javax.swing.JTextField termin1;
    private javax.swing.JTextField termin2;
    private javax.swing.JTextField termin3;
    private javax.swing.JTextField termin4;
    private javax.swing.JTextField termin5;
    private javax.swing.JTextField termin6;
    private javax.swing.JTextField termin7;
    private javax.swing.JTextField termin8;
    private javax.swing.JLabel uhrzeitLabel1;
    private javax.swing.JLabel uhrzeitLabel2;
    private javax.swing.JLabel uhrzeitLabel3;
    private javax.swing.JLabel uhrzeitLabel4;
    private javax.swing.JLabel uhrzeitLabel5;
    private javax.swing.JLabel uhrzeitLabel6;
    private javax.swing.JLabel uhrzeitLabel7;
    private javax.swing.JLabel uhrzeitLabel8;
    public javax.swing.JLabel yearLabel;
    private javax.swing.JLabel yearMinusLabel;
    private javax.swing.JLabel yearPlusLabel;
    // End of variables declaration                   
}


Hier die Time.java

Java:
package mycalendar;

import javax.swing.*;

/**
 *
 * @author christopherbucklein
 */
public class Time {

    int calendar[] = new int[3];

    int dpm[] = new int[12];

    public Time(JLabel dayLabel, JLabel monthLabel, JLabel yearLabel) {

        calendar[0] = Integer.parseInt(dayLabel.getText());
        calendar[1] = Integer.parseInt(monthLabel.getText());
        calendar[2] = Integer.parseInt(yearLabel.getText());

        dpm[0] = 31;
        dpm[1] = 28;
        dpm[2] = 31;
        dpm[3] = 30;
        dpm[4] = 31;
        dpm[5] = 30;
        dpm[6] = 31;
        dpm[7] = 31;
        dpm[8] = 30;
        dpm[9] = 31;
        dpm[10] = 30;
        dpm[11] = 31;

    }

    public int[] dayPlusMethod() {
       if(calendar[2] % 4 == 0)
            {
            dpm[1] = 29;
        }

        calendar[0]++;

        if (calendar[0] > 31 && calendar[1] == 12) {
            calendar[0] = 1;
            calendar[1] = 1;
            calendar[2]++;
        }
        
        if (calendar[0] > dpm[calendar[1] - 1])
            {
            calendar[0] = 1;
            calendar[1]++;
            }

        return calendar;

    }

    public int[] monthPlusMethod() {
        calendar[1]++;
        if (calendar[1] > 12) {
            calendar[1] = 1;
            calendar[2]++;
        }
        if (calendar[0] > dpm[calendar[1] - 1])
            {
            calendar[0] = dpm[calendar[1] - 1];
            }
       
        return calendar;
    }

    public int yearPlusMethod() {
        calendar[2]++;
        return calendar[2];
    }
    public int[] dayMinusMethod() {
        calendar[0]--;
        if (calendar[0] < 1 && calendar[1] == 1) {
            calendar[0] = 31;
            calendar[1] = 12;
            calendar[2]--;
            }

        if (calendar[0] > dpm[calendar[1] - 1])
            {
            calendar[0] = dpm[calendar[1] - 1];
            }

        if (calendar[0] < 1){
            calendar[0] = dpm[calendar[1] - 2];
            calendar[1]--;
        }
        return calendar;
    }

    public int[] monthMinusMethod() {
        calendar[1]--;
        if (calendar[1] < 1) {
            calendar[1] = 12;
            calendar[2]--;
        }
        if (calendar[0] > dpm[calendar[1] - 1])
            {
            calendar[0] = dpm[calendar[1] - 1];
            }

       return calendar;
    }

    public int yearMinusMethod() {
        calendar[2]--;
        return calendar[2];
    }

}
 

Anhänge

  • MyCalendar 3.zip
    86,3 KB · Aufrufe: 4
Zuletzt bearbeitet:

Landei

Top Contributor
NullPointerExceptions kommen daher, dass man versucht, an einer null-Referenz eine Methode aufzurufen.

Schau nach, in welcher Zeile die Exception fliegt, und lass dir genau davor alle Null-Kandidaten mit System.out.println ausgeben, dann bist du schonal einen Schritt weiter.
 
Und hier die Writer.java

Java:
package mycalendar;

import java.io.*;
import java.util.logging.Level;
import java.util.logging.Logger;
import javax.swing.*;
/**
 *
 * @author christopherbucklein
 */
public class Writer {

    String[] dates = new String[8];

    public Writer(JTextField label1, JTextField label2, JTextField label3, JTextField label4, JTextField label5, JTextField label6, JTextField label7, JTextField label8) {
        dates[0] = label1.getText();
        dates[1] = label2.getText();
        dates[2] = label3.getText();
        dates[3] = label4.getText();
        dates[4] = label5.getText();
        dates[5] = label6.getText();
        dates[6] = label7.getText();
        dates[7] = label8.getText();
    }

    public void write(String day, String month, String year) {
        try {
            String dateiname = day + month + year + ".txt";
            BufferedWriter writer = new BufferedWriter(new FileWriter(dateiname));
            for (int i = 0; i < dates.length; i++) {
                writer.write(dates[i]);
                writer.newLine();
            }
            writer.close();
        } catch (IOException ex) {
            Logger.getLogger(Writer.class.getName()).log(Level.SEVERE, null, ex);

        }

    }

    public void read(String day, String month, String year, JTextField[] fields) {
        String dateiname = day + month + year + ".txt";
        String text;
        try {
            BufferedReader reader = new BufferedReader(new FileReader(dateiname));
            for (int i = 0; i < fields.length; i++) {
                text = reader.readLine();
                fields[i].setText(text);
            }
            reader.close();
        } catch (Exception ex) {
            for (int i = 0; i < fields.length; i++) {
                fields[i].setText("");
        }


    }
}
}
 
Ausgeworfen wird folgendes:

Java:
Exception in thread "AWT-EventQueue-0" java.lang.NullPointerException
        at mycalendar.Calendar.monthPlusLabelMouseClicked(Calendar.java:317)
        at mycalendar.Calendar.access$100(Calendar.java:19)
        at mycalendar.Calendar$2.mouseClicked(Calendar.java:118)
        at java.awt.Component.processMouseEvent(Component.java:6351)
        at javax.swing.JComponent.processMouseEvent(JComponent.java:3267)
        at java.awt.Component.processEvent(Component.java:6113)
        at java.awt.Container.processEvent(Container.java:2085)
        at java.awt.Component.dispatchEventImpl(Component.java:4714)
        at java.awt.Container.dispatchEventImpl(Container.java:2143)
        at java.awt.Component.dispatchEvent(Component.java:4544)
        at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4618)
        at java.awt.LightweightDispatcher.processMouseEvent(Container.java:4291)
        at java.awt.LightweightDispatcher.dispatchEvent(Container.java:4212)
        at java.awt.Container.dispatchEventImpl(Container.java:2129)
        at java.awt.Window.dispatchEventImpl(Window.java:2478)
        at java.awt.Component.dispatchEvent(Component.java:4544)
        at java.awt.EventQueue.dispatchEvent(EventQueue.java:635)
        at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:296)
        at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:211)
        at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:201)
        at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:196)
        at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:188)
        at java.awt.EventDispatchThread.run(EventDispatchThread.java:122)

Exemplarisch für monthPlusMethod
 
...

Wenn nur alles so einfach wäre ;)
Vielen Dank!

Ich hatte ihn mal initialisiert, aber dann hatte ich im Konstruktor noch ein bisschen war umgestellt, da ist er wahrscheinlich verloren gegangen...

Vielen Dank, super, wie schnell mir hier geholfen wurde!
 
Hallo,

ich habe noch einmal die Methoden umgestellt, und bekomme wieder eine NullPointerException, die ich nicht begründen kann...


Java:
    public void write(String day, String month, String year) {
        try {
            String dateiname = day + month + year + ".txt";
            BufferedWriter writer = new BufferedWriter(new FileWriter(dateiname));
            for (int i = 0; i < dates.length; i++) {
                writer.write(dates[i]);
                writer.newLine();
            }
            writer.close();
        } catch (IOException ex) {
            Logger.getLogger(Writer.class.getName()).log(Level.SEVERE, null, ex);

        }

    }

Java:
 public Calendar() {
        initComponents();
        time = new Time(dayLabel, monthLabel, yearLabel);
        timeFields = new JTextField[8];
        timeFields[0] = termin1;
        timeFields[1] = termin2;
        timeFields[2] = termin3;
        timeFields[3] = termin4;
        timeFields[4] = termin5;
        timeFields[5] = termin6;
        timeFields[6] = termin7;
        timeFields[7] = termin8;
        writer = new Writer(timeFields);
    }

Java:
private void speichernButtonActionPerformed(java.awt.event.ActionEvent evt) {                                                

        writer.write(dayLabel.getText(), monthLabel.getText(), yearLabel.getText());
    }

Java:
Exception in thread "AWT-EventQueue-0" java.lang.NullPointerException
        at java.io.Writer.write(Writer.java:140)
        at mycalendar.Writer.write(Writer.java:37)
        at mycalendar.Calendar.speichernButtonActionPerformed(Calendar.java:387)
        at mycalendar.Calendar.access$600(Calendar.java:19)
        at mycalendar.Calendar$7.actionPerformed(Calendar.java:195)
        at javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:2028)
        at javax.swing.AbstractButton$Handler.actionPerformed(AbstractButton.java:2351)
        at javax.swing.DefaultButtonModel.fireActionPerformed(DefaultButtonModel.java:387)
        at javax.swing.DefaultButtonModel.setPressed(DefaultButtonModel.java:242)
        at javax.swing.plaf.basic.BasicButtonListener.mouseReleased(BasicButtonListener.java:236)
        at java.awt.Component.processMouseEvent(Component.java:6348)
        at javax.swing.JComponent.processMouseEvent(JComponent.java:3267)
        at java.awt.Component.processEvent(Component.java:6113)
        at java.awt.Container.processEvent(Container.java:2085)
        at java.awt.Component.dispatchEventImpl(Component.java:4714)
        at java.awt.Container.dispatchEventImpl(Container.java:2143)
        at java.awt.Component.dispatchEvent(Component.java:4544)
        at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4618)
        at java.awt.LightweightDispatcher.processMouseEvent(Container.java:4282)
        at java.awt.LightweightDispatcher.dispatchEvent(Container.java:4212)
        at java.awt.Container.dispatchEventImpl(Container.java:2129)
        at java.awt.Window.dispatchEventImpl(Window.java:2478)
        at java.awt.Component.dispatchEvent(Component.java:4544)
        at java.awt.EventQueue.dispatchEvent(EventQueue.java:635)
        at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:296)
        at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:211)
        at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:201)
        at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:196)
        at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:188)
        at java.awt.EventDispatchThread.run(EventDispatchThread.java:122)

Es würde mich sehr freuen, wenn ihr mir noch einmal helfen könntet.

Gruss,

Christopher
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
Zeppi NullPointerException in einer if-Abfrage Allgemeine Java-Themen 6
T imagej-server NullPointerException Allgemeine Java-Themen 1
L Methoden NullpointerException Allgemeine Java-Themen 5
B OOP Auslöser für NullPointerException Allgemeine Java-Themen 3
I Vererbung Nicht erklärliche NullPointerException Allgemeine Java-Themen 7
Drachenbauer warum bekomme ich hier eine NullPointerException Allgemeine Java-Themen 6
I Array Parameter mit 2 Klassen - NullPointerException Allgemeine Java-Themen 3
S Exception in thread "main" java.lang.NullPointerException at FamilienApp.main(FamilienApp.java:15) Allgemeine Java-Themen 1
S Methoden Problem mit NullPointerException Allgemeine Java-Themen 9
F Input/Output NullPointerException, aber wieso? [Apache POI] Allgemeine Java-Themen 11
F Input/Output NullPointerException with Apache POI Allgemeine Java-Themen 7
P wiedermal NullPointerException Allgemeine Java-Themen 2
kodela NullPointerException Allgemeine Java-Themen 2
L Variablen NullPointerException (RSA) Allgemeine Java-Themen 2
B NullPointerException bei @Inject JSF Allgemeine Java-Themen 0
Arif Probleme mit NullPointerException Allgemeine Java-Themen 2
G String an Arduino senden NullPointerException in PrintWriter Allgemeine Java-Themen 6
Z NullPointerException beim Schreiben einer ArrayList in eine Datei Allgemeine Java-Themen 6
R NullPointerException Ohne Grund Allgemeine Java-Themen 5
D ByteBuffer getInt NullpointerException Allgemeine Java-Themen 4
S JavaMail - MailSubject,MailFrom,MailDate in String Array speichern NullPointerException Allgemeine Java-Themen 2
T Compiler-Fehler NullpointerException! Allgemeine Java-Themen 7
A Methode ergibt Java NullpointerException. Allgemeine Java-Themen 3
F Socket NullPointerException Bitte um hilfe! Allgemeine Java-Themen 12
L NullPointerException bei Instanzvarialen Allgemeine Java-Themen 3
B Compiler-Fehler NullPointerException beim Auslesen von .lang-Datei Allgemeine Java-Themen 3
I Fehler java.lang.NullPointerException Allgemeine Java-Themen 5
B NullPointerException - Aber kein Fehler im Code Allgemeine Java-Themen 4
H java.lang.NullPointerException Allgemeine Java-Themen 5
L Interpreter-Fehler java.lang.NullPointerException Allgemeine Java-Themen 17
M JSON NullPointerException Allgemeine Java-Themen 5
M NullpointerException Allgemeine Java-Themen 2
L Eclipse NullPointerException Allgemeine Java-Themen 6
M Fitness-Rechner: NullPointerException Allgemeine Java-Themen 7
G Thread erzeugt nicht plausible NullPointerException Allgemeine Java-Themen 7
A java.lang.NullPointerException bei Schleife Allgemeine Java-Themen 3
K Unerklärliche nullpointerexception Allgemeine Java-Themen 6
C Was bekomme ich eine Nullpointerexception? (Apache POI) Allgemeine Java-Themen 3
S javadoc java.lang.NullPointerException Allgemeine Java-Themen 2
K 3Dimensionales Feld - NullPointerException Allgemeine Java-Themen 2
J Compiler-Fehler NullPointerException Allgemeine Java-Themen 12
T Compiler-Fehler NullPointerException bei ADT LinkedTree Allgemeine Java-Themen 31
P Beim sortieren nullpointerexception Allgemeine Java-Themen 12
3 MP3-Finder wirft NullPointerException Allgemeine Java-Themen 13
M NullPointerException MenuItem Allgemeine Java-Themen 7
S Dialog einblenden bei NullPointerException Allgemeine Java-Themen 5
T DefaultTableModel NullPointerException Allgemeine Java-Themen 7
ruutaiokwu NullPointerException auf member, die per konstruktor gesetzt wird (multithread-kontext) Allgemeine Java-Themen 2
B NullPointerException ohne Angabe Allgemeine Java-Themen 5
F NullPointerException aber warum ? Allgemeine Java-Themen 9
F Array NullPointerException Allgemeine Java-Themen 26
B NullPointerException bei Wertzuweisung Allgemeine Java-Themen 3
MonsterBit java.lang.NullPointerException Allgemeine Java-Themen 2
O NullPointerException (wohl Denkfehler) Allgemeine Java-Themen 5
N Warum nullPointerException? Allgemeine Java-Themen 13
N Generics-NullpointerException Allgemeine Java-Themen 7
J NullPointerException mit HashMap Allgemeine Java-Themen 2
B NullPointerException bei new XStream() Allgemeine Java-Themen 2
J java.lang.NullPointerException bei Threadprogrammierung Allgemeine Java-Themen 9
J NullPointerException bei JasperReports Allgemeine Java-Themen 2
V NullPointerException bei Vector Allgemeine Java-Themen 2
G Warum kommt hier NullPointerException? Allgemeine Java-Themen 3
G NullPointerException Allgemeine Java-Themen 5
R Immer wieder NullPointerException Allgemeine Java-Themen 2
M NullPointerException Allgemeine Java-Themen 4
J Fehler: java.lang.NullPointerException Allgemeine Java-Themen 2
G NullPointerException, aber warum? Allgemeine Java-Themen 10
G NullPointerException problem Allgemeine Java-Themen 30
mhauert NullPointerException bei Zugriff auf JNI Objekt Allgemeine Java-Themen 6
J Folgender Fehler: java.lang.NullPointerException Allgemeine Java-Themen 4
T NullPointerException nach Java Update Allgemeine Java-Themen 4
G NullPointerException Allgemeine Java-Themen 6
H NullPointerException trotz Abfangen von null? Allgemeine Java-Themen 9
H nullPointerException bei [ArrayList<String>.add(.)] Allgemeine Java-Themen 3
H NullPointerException Allgemeine Java-Themen 10
P NullPointerException Allgemeine Java-Themen 8
A NullPointerException, Thread soll Thread steuern Allgemeine Java-Themen 2
MQue Sichtbarkeit/HashMap/NullPointerexception Allgemeine Java-Themen 2
MQue NullPointerException Allgemeine Java-Themen 17
A NullPointerException Allgemeine Java-Themen 15
G java.lang.NullPointerException JFreeChart Allgemeine Java-Themen 5
A NullPointerException Allgemeine Java-Themen 11
G Methode mit Schleifen NullPointerException Allgemeine Java-Themen 2
B Pobleme mit NullpointerException Allgemeine Java-Themen 13
M java.lang.NullPointerException im Chatclient Allgemeine Java-Themen 12
S NullPointerException beim Laden von BMPs Allgemeine Java-Themen 3
B java.lang.NullPointerException Allgemeine Java-Themen 11
M NullPointerException bei Subklasse ohne MediaTracker Allgemeine Java-Themen 12
G Problem mit NullPointerException Allgemeine Java-Themen 5
D NullPointerException wo keine sein sollte. Allgemeine Java-Themen 2
F NullpointerException beim Einlesen einer Datei Allgemeine Java-Themen 13
V Button schließen - NullPointerException Allgemeine Java-Themen 6
V NullPointerException Allgemeine Java-Themen 12

Ähnliche Java Themen

Neue Themen


Oben