Hallo zusammen,
ich will in einer ComboBox das aktuelle Jahr eintragen. Das funktioniert auch.
Wenn ich jetzt den Monat ändere, zb. von Dezember 2017 auf Januar 2018 bekomme ich eine NullPointerException. In der Variable steht aber etwas drin, habe es mit System.out getestet.
Was mache ich falsch???
Hier der Code:
ich will in einer ComboBox das aktuelle Jahr eintragen. Das funktioniert auch.
Wenn ich jetzt den Monat ändere, zb. von Dezember 2017 auf Januar 2018 bekomme ich eine NullPointerException. In der Variable steht aber etwas drin, habe es mit System.out getestet.
Was mache ich falsch???
Hier der Code:
Java:
package timetable;
import java.awt.BorderLayout;
import java.awt.EventQueue;
import java.awt.GraphicsEnvironment;
import java.awt.Rectangle;
import java.lang.reflect.Array;
import java.util.Calendar;
import java.util.Date;
import java.util.EventObject;
import java.util.GregorianCalendar;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.JTable;
import javax.swing.border.EmptyBorder;
import javax.swing.table.DefaultTableModel;
import timetable.Kalender.tblCalendarRenderer;
import javax.swing.JLabel;
import javax.swing.JComboBox;
import javax.swing.JButton;
import java.awt.event.ActionListener;
import java.awt.event.ActionEvent;
import javax.swing.JTextField;
import javax.swing.DropMode;
import javax.swing.UIManager;
import java.beans.PropertyChangeListener;
import java.beans.PropertyChangeEvent;
public class TimetableMain extends JFrame {
/**
*
*/
private static final long serialVersionUID = 1L;
private static JPanel contentPane;
private static JTable tblCal;
static int realDay, realMonth, realYear, currentMonth;
public static int monat;
static int currentYear;
private static JComboBox cmbJahr;
private static JLabel tfMonat;
private static JButton btnVor;
private static JButton btnZurueck;
private static JTextField tfJahr;
public static void main(String[] args) {
EventQueue.invokeLater(new Runnable() {
public void run() {
try {
TimetableMain frame = new TimetableMain();
frame.setVisible(true);
} catch (Exception e) {
e.printStackTrace();
}
}
});
}
public TimetableMain() {
setTitle("Timetable");
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
this.setBounds(100, 100, 827, 470);
contentPane = new JPanel();
contentPane.setBorder(new EmptyBorder(5, 5, 5, 5));
this.setContentPane(contentPane);
contentPane.setLayout(null);
//Label Monat beim Start mit aktuellem Monat vorbelegen
String[] monate = {"Januar", "Februar", "März", "April", "Mai", "Juni", "Juli", "August", "September", "Oktober", "November", "Dezember"};
JLabel lblDatum = new JLabel("Datum:");
lblDatum.setBounds(30, 213, 46, 14);
contentPane.add(lblDatum);
JLabel lblMonat = new JLabel("");
lblMonat.setBounds(236, 150, 89, 31);
contentPane.add(lblMonat);
GregorianCalendar calendar = new GregorianCalendar(); //Create calendar
realMonth = calendar.get(GregorianCalendar.MONTH); //Get month
realYear = calendar.get(GregorianCalendar.YEAR); //Get year
currentYear = realYear;
monat = realMonth;
JButton btnVor = new JButton(">>");
btnVor.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
if (monat == 11) { //Forward one year
monat = 0;
currentYear++;
}
else { //Forward one month
monat++;
}
refreshCalendar(monat, currentYear);
//Aktuellen Monat ausgeben
if (monat == 0){
lblMonat.setText("Januar");
}
else if(monat == 1){
lblMonat.setText("Februar");
}
else if(monat == 2){
lblMonat.setText("März");
}
else if(monat == 3){
lblMonat.setText("April");
}
else if(monat == 4){
lblMonat.setText("Mai");
}
else if(monat == 5){
lblMonat.setText("Juni");
}
else if(monat == 6){
lblMonat.setText("Juli");
}
else if(monat == 7){
lblMonat.setText("August");
}
else if(monat == 8){
lblMonat.setText("September");
}
else if(monat == 9){
lblMonat.setText("Oktober");
}
else if(monat == 10){
lblMonat.setText("November");
}
else if(monat == 11){
lblMonat.setText("Dezember");
}
}
});
btnVor.setBounds(130, 163, 89, 23);
contentPane.add(btnVor);
btnZurueck = new JButton("<<");
btnZurueck.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
if (monat == 0){ //Back one year
monat = 11;
currentYear--;
}
else { //Back one month
monat--;
}
refreshCalendar(monat, currentYear);
//Aktuellen Monat ausgeben
if (monat == 0){
lblMonat.setText("Januar");
}
else if(monat == 1){
lblMonat.setText("Februar");
}
else if(monat == 2){
lblMonat.setText("März");
}
else if(monat == 3){
lblMonat.setText("April");
}
else if(monat == 4){
lblMonat.setText("Mai");
}
else if(monat == 5){
lblMonat.setText("Juni");
}
else if(monat == 6){
lblMonat.setText("Juli");
}
else if(monat == 7){
lblMonat.setText("August");
}
else if(monat == 8){
lblMonat.setText("September");
}
else if(monat == 9){
lblMonat.setText("Oktober");
}
else if(monat == 10){
lblMonat.setText("November");
}
else if(monat == 11){
lblMonat.setText("Dezember");
}
}
});
btnZurueck.setBounds(30, 163, 89, 23);
contentPane.add(btnZurueck);
JComboBox cmbJahr = new JComboBox();
cmbJahr.setEditable(true);
cmbJahr.setBounds(120, 119, 133, 20);
contentPane.add(cmbJahr);
//Label Monat beim Start mit aktuellem Monat vorbelegen
if (lblMonat.getText().length() == 0) {
lblMonat.setText(monate[monat]);
}
//Erzeugen der Jahre in der ComboBox
for (int i = realYear-100; i <= realYear+100; i++) {//Anzahl der Jahre vor und zurück
cmbJahr.addItem(String.valueOf(i));
}
//Das aktuelle Jahr in der ComboBox belegen
cmbJahr.setSelectedItem(String.valueOf(realYear));
//Das aktuell in der ComboBox gesetzte Jahr
//cmbJahr.getSelectedItem(String.valueOf(Jahre));
GraphicsEnvironment graphicsEnvironment=GraphicsEnvironment.getLocalGraphicsEnvironment();
Rectangle maximumWindowBounds=graphicsEnvironment.getMaximumWindowBounds();
setBounds(maximumWindowBounds);
refreshCalendar(monat, currentYear);
}
public static void refreshCalendar(int month, int year) {
cmbJahr.setSelectedItem(String.valueOf(year));
//Variables
String[] monate = {"Januar", "Februar", "März", "April", "Mai", "Juni", "Juli", "August", "September", "Oktober", "November", "Dezember"};
int nod, som; //Number of Days, Start of Month
//Get real month/year
//GregorianCalendar calendar = new GregorianCalendar(); //Create calendar
//realMonth = calendar.get(GregorianCalendar.MONTH); //Get month
//realYear = calendar.get(GregorianCalendar.YEAR); //Get year
//currentYear = realYear;
//monat = realMonth;
tblCal = new JTable();
tblCal.setBounds(0, 233, 121, 589);
tblCal.setModel(new DefaultTableModel(
new Object[][] {
{"01." + " " + String.valueOf(monate[monat])},
{"02." + " " + String.valueOf(monate[monat])},
{"03." + " " + String.valueOf(monate[monat])},
{"04." + " " + String.valueOf(monate[monat])},
{"05." + " " + String.valueOf(monate[monat])},
{"06." + " " + String.valueOf(monate[monat])},
{"07." + " " + String.valueOf(monate[monat])},
{"08." + " " + String.valueOf(monate[monat])},
{"09." + " " + String.valueOf(monate[monat])},
{"10." + " " + String.valueOf(monate[monat])},
{"11." + " " + String.valueOf(monate[monat])},
{"12." + " " + String.valueOf(monate[monat])},
{"13." + " " + String.valueOf(monate[monat])},
{"14." + " " + String.valueOf(monate[monat])},
{"15." + " " + String.valueOf(monate[monat])},
{"16." + " " + String.valueOf(monate[monat])},
{"17." + " " + String.valueOf(monate[monat])},
{"18." + " " + String.valueOf(monate[monat])},
{"19." + " " + String.valueOf(monate[monat])},
{"20." + " " + String.valueOf(monate[monat])},
{"21." + " " + String.valueOf(monate[monat])},
{"22." + " " + String.valueOf(monate[monat])},
{"23." + " " + String.valueOf(monate[monat])},
{"24." + " " + String.valueOf(monate[monat])},
{"25." + " " + String.valueOf(monate[monat])},
{"26." + " " + String.valueOf(monate[monat])},
{"27." + " " + String.valueOf(monate[monat])},
{"28." + " " + String.valueOf(monate[monat])},
{null},
{null},
{null},
},
new String[] {
"Datum"
}
));
contentPane.add(tblCal);
tblCal.setRowHeight(19);
tfJahr = new JTextField();
tfJahr.setEditable(false);
tfJahr.setBounds(281, 119, 86, 20);
contentPane.add(tfJahr);
tfJahr.setColumns(10);
//lblMonth.setBounds(160-lblMonth.getPreferredSize().width/2, 25, 180, 25);//Re-align label with calendar
/*
//Clear table
for (int i = 0; i < 6; i++) {
for (int j = 0; j <7; j++) {
mtblCalendar.setValueAt(null, i, j);
}
}
*/
/*
//Get first day of month and number of days
GregorianCalendar cal = new GregorianCalendar(year, month, 1);
nod = cal.getActualMaximum(GregorianCalendar.DAY_OF_MONTH);
som = cal.get(GregorianCalendar.DAY_OF_WEEK);
*/
//Draw calendar
/* for (int i = 1; i < nod; i++) {
int row = new Integer ((i+som-2)/7);
int column = (i+som-2)%7;
mtblCalendar.setValueAt(i, row, column);
}
*/
//Apply renderers
//tblCalendar.setDefaultRenderer(tblCalendar.getColumnClass(0), new tblCalendarRenderer());
}
}
Zuletzt bearbeitet von einem Moderator: