B
Berger23
Gast
Hallo!
Ich schreibe einen kleinen/simplen Kalender, den man mit Terminen füllen kann. Der Kalender wird schon erstellt, nur die Eintragung der Termine bereitet mir Kopfschmerzen.
Ich habe zwei Tabellen:
1) jTable3: ist der "eigentliche" Kalender -> also in diese Tabelle werden die Tage eingetragen.
2) jTable13: in dieser Tabelle sind die Termine gespeichert.
jetzt will ich die Termine von jTable13 in jTable3 eintragen.
hab mir das folgendermaßen vorgestellt: (Problem wird am Ende erläutert)
Die Methode Kalender erstellt erstmal den Kalender und trägt diesen dann in das jTable3 ein:
Die Methode Prüfen holt dann die Termine aus dem jTable13 und zerlegt das VON Datum und BIS Datum in Tage und Monate. Die Methode Zerlegen, berechnet die Tage zwischen dem VON und BIS Datum und wird dann der Methode Prüfen übergeben, um die Daten dann in der jTable3 zu suchen:
Mein Problem ist jetzt, dass der Termin immer in die erste Zelle geschrieben wird. Wenn es mehrere Termine in jTable13 gibt, dann fügt er immer nur den letzten ein (Wahrscheinlich überschreibt er die erste Zelle einfach nochmal). Außerdem fügt er die Tage zwischen VON und BIS nicht ein.
Ich weiß, dass ich bis jetzt nur die Tage beachte und den Monat nicht berücksichtige. werde ich dann nachtragen wenns mal die tage einfügt.
Ich bekomme auch eine Exception:
Exception in thread "AWT-EventQueue-0" java.lang.StringIndexOutOfBoundsException: String index out of range: 10
at java.lang.String.substring(String.java:1935)
at GUIH.Prufen(GUIH.java:4372)
at GUIH.Kalender(GUIH.java:4353)
at GUIH.jButton53ActionPerformed(GUIH.java:2989)
at GUIH.access$4900(GUIH.java:17)
at GUIH$54.actionPerformed(GUIH.java:1718)
at javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:1995)
at javax.swing.AbstractButton$Handler.actionPerformed(AbstractButton.java:2318)
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:6038)
at javax.swing.JComponent.processMouseEvent(JComponent.java:3260)
at java.awt.Component.processEvent(Component.java:5803)
at java.awt.Container.processEvent(Container.java:2058)
at java.awt.Component.dispatchEventImpl(Component.java:4410)
at java.awt.Container.dispatchEventImpl(Container.java:2116)
at java.awt.Component.dispatchEvent(Component.java:4240)
at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4322)
End: null
End: null
End: null
End: null
End: null
End: null
End: null
End: null
End: null
End: null
End: null
End: null
at java.awt.LightweightDispatcher.processMouseEvent(Container.java:3986)
at java.awt.LightweightDispatcher.dispatchEvent(Container.java:3916)
at java.awt.Container.dispatchEventImpl(Container.java:2102)
at java.awt.Window.dispatchEventImpl(Window.java:2429)
at java.awt.Component.dispatchEvent(Component.java:4240)
at java.awt.EventQueue.dispatchEvent(EventQueue.java:599)
at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:273)
at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:183)
at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:173)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:168)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:160)
at java.awt.EventDispatchThread.run(EventDispatchThread.java:121)
ich wäre sehr dankbar, wenn man mir einige tipps geben könnte!
Lg,
Berger
Ich schreibe einen kleinen/simplen Kalender, den man mit Terminen füllen kann. Der Kalender wird schon erstellt, nur die Eintragung der Termine bereitet mir Kopfschmerzen.
Ich habe zwei Tabellen:
1) jTable3: ist der "eigentliche" Kalender -> also in diese Tabelle werden die Tage eingetragen.
2) jTable13: in dieser Tabelle sind die Termine gespeichert.
jetzt will ich die Termine von jTable13 in jTable3 eintragen.
hab mir das folgendermaßen vorgestellt: (Problem wird am Ende erläutert)
Die Methode Kalender erstellt erstmal den Kalender und trägt diesen dann in das jTable3 ein:
Code:
public void Kalender(int monat, int jahr)
{
GregorianCalendar heute = new GregorianCalendar();
int tagH = heute.get(java.util.Calendar.DAY_OF_MONTH);
int monatH = heute.get(java.util.Calendar.MONTH);
int jahrH = heute.get(java.util.Calendar.YEAR);
GregorianCalendar lfDatum = new GregorianCalendar(jahr, monat, 1);
int aktWochentag = lfDatum.get(Calendar.DAY_OF_WEEK);
int zl = 0;
int sp = 0;
if (aktWochentag != Calendar.SUNDAY) {
for(int tagNo = Calendar.MONDAY; tagNo < aktWochentag; ++tagNo)
sp = sp + 1;
}
else {
sp = 6;
}
while(lfDatum.get(Calendar.MONTH) == monat) // monatH
{
int tag = lfDatum.get(Calendar.DAY_OF_MONTH);
jTable3.setValueAt(tag, zl, sp);
sp = sp + 1;
if(aktWochentag == Calendar.SUNDAY)
{
zl = zl + 1;
sp = 0;
}
lfDatum.add(Calendar.DAY_OF_MONTH, 1);
aktWochentag = lfDatum.get(Calendar.DAY_OF_WEEK);
}
Prufen();
}
Die Methode Prüfen holt dann die Termine aus dem jTable13 und zerlegt das VON Datum und BIS Datum in Tage und Monate. Die Methode Zerlegen, berechnet die Tage zwischen dem VON und BIS Datum und wird dann der Methode Prüfen übergeben, um die Daten dann in der jTable3 zu suchen:
Code:
public void Prufen()
{
int[] vonTag = new int[100];
int[] vonMonat = new int[100];
int[] bisTag = new int[100];
int[] bisMonat = new int[100];
String[] end = new String[100];
// Einlesen der Termine aus jTable3
for(int i = 0; i < jTable13.getRowCount(); i++)
{//jTable3.getValueAt(zl,sp)==null?"":jTable3.getValueAt(zl,sp)
System.out.println("AusZelle: " + jTable13.getValueAt(i,2));
vonTag[i] = jTable13.getValueAt(i,2)==""?00000000000000:Integer.valueOf(jTable13.getValueAt(i, 2).toString().substring(8,10)).intValue();
vonMonat[i] = jTable13.getValueAt(i,2)==""?00000000000000:Integer.valueOf(jTable13.getValueAt(i, 2).toString().substring(5,7)).intValue();
//System.out.println("________Tag: " + vonTag[i]);
bisTag[i] = jTable13.getValueAt(i,3)==null?000000000000000:Integer.valueOf(jTable13.getValueAt(i, 3).toString().substring(8,10)).intValue();
bisMonat[i] = jTable13.getValueAt(i,3)==null?000000000000000:Integer.valueOf(jTable13.getValueAt(i, 3).toString().substring(5,7)).intValue();
end = Zerlegen(vonTag[i], vonMonat[i], bisTag[i], bisMonat[i]);
for(int r = 0; r < end.length; r++)
System.out.println("End: " + end[r]);
// Termin in jTable3 suchen
String str = "";
loop1:
for (int zl = 0; zl < jTable3.getRowCount(); zl++)
{
for (int sp = 0; sp < jTable3.getColumnCount(); sp++)
{
str = jTable3.getValueAt(zl,sp)==null?"":jTable3.getValueAt(zl,sp).toString(); // Damit keine NullPointerException
if(str.equals(end[i]));
{
jTable3.setValueAt(jTable13.getValueAt(i,0),zl,sp);
break loop1;
}
}
}
}
}
Code:
public String[] Zerlegen(int vonTag2, int vonMonat2, int bisTag2, int bisMonat2)
{
String[] daten = new String[100];
GregorianCalendar d = new GregorianCalendar(2007,vonMonat2,vonTag2);
GregorianCalendar d2 = new GregorianCalendar(2007,bisMonat2,bisTag2);
Calendar datum1 = Calendar.getInstance(); // Von
Calendar datum2 = Calendar.getInstance(); // Bis
long von = d.getTimeInMillis();
long bis = d2.getTimeInMillis();
datum1.setTimeInMillis(von);
datum2.setTimeInMillis(bis);
long dayVon = (datum1.get(Calendar.DAY_OF_YEAR)-1);
long dayBis = (datum2.get(Calendar.DAY_OF_YEAR)-1);
java.text.SimpleDateFormat sdf = new java.text.SimpleDateFormat("D", Locale.GERMANY);
int i = 0;
while(dayVon < dayBis)
{
d.add(Calendar.DAY_OF_MONTH, 1);
dayVon = dayVon + 1;
daten[i] = String.valueOf(d.DAY_OF_MONTH);
//System.out.println(String.valueOf(d.DAY_OF_MONTH));
i = i + 1;
}
return daten;
}
Mein Problem ist jetzt, dass der Termin immer in die erste Zelle geschrieben wird. Wenn es mehrere Termine in jTable13 gibt, dann fügt er immer nur den letzten ein (Wahrscheinlich überschreibt er die erste Zelle einfach nochmal). Außerdem fügt er die Tage zwischen VON und BIS nicht ein.
Ich weiß, dass ich bis jetzt nur die Tage beachte und den Monat nicht berücksichtige. werde ich dann nachtragen wenns mal die tage einfügt.
Ich bekomme auch eine Exception:
Exception in thread "AWT-EventQueue-0" java.lang.StringIndexOutOfBoundsException: String index out of range: 10
at java.lang.String.substring(String.java:1935)
at GUIH.Prufen(GUIH.java:4372)
at GUIH.Kalender(GUIH.java:4353)
at GUIH.jButton53ActionPerformed(GUIH.java:2989)
at GUIH.access$4900(GUIH.java:17)
at GUIH$54.actionPerformed(GUIH.java:1718)
at javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:1995)
at javax.swing.AbstractButton$Handler.actionPerformed(AbstractButton.java:2318)
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:6038)
at javax.swing.JComponent.processMouseEvent(JComponent.java:3260)
at java.awt.Component.processEvent(Component.java:5803)
at java.awt.Container.processEvent(Container.java:2058)
at java.awt.Component.dispatchEventImpl(Component.java:4410)
at java.awt.Container.dispatchEventImpl(Container.java:2116)
at java.awt.Component.dispatchEvent(Component.java:4240)
at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4322)
End: null
End: null
End: null
End: null
End: null
End: null
End: null
End: null
End: null
End: null
End: null
End: null
at java.awt.LightweightDispatcher.processMouseEvent(Container.java:3986)
at java.awt.LightweightDispatcher.dispatchEvent(Container.java:3916)
at java.awt.Container.dispatchEventImpl(Container.java:2102)
at java.awt.Window.dispatchEventImpl(Window.java:2429)
at java.awt.Component.dispatchEvent(Component.java:4240)
at java.awt.EventQueue.dispatchEvent(EventQueue.java:599)
at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:273)
at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:183)
at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:173)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:168)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:160)
at java.awt.EventDispatchThread.run(EventDispatchThread.java:121)
ich wäre sehr dankbar, wenn man mir einige tipps geben könnte!
Lg,
Berger