JXDatePicker Datum auslesen?

holzart

Mitglied
Hallo,

ich habe mir eine ZeitraumGUI erstellt und dort den JXDatePicker mit eingebaut. So nun kann man den Zeitraum bestimmen und diese Werte sollen beim klick auf "Einstellungen übernemen" gespeichert werden.
Ich komme aber nicht an die Daten. Ich brauche das Jahr, den Monat und den Tag. Diese Werte möchte ich an den Calendar übergeben, da nur der Calendar mit dem Rest der Software kompatibel ist. Hier mal die wichtigsten Codeschnipsel:

ZeitraumGUI:
HTML:
        final JPanel datumPanel = new JPanel();		//neues JPanel für das datum anlegen
        
        final JXDatePicker datePicker = new JXDatePicker(); //neues Objekt der Klasse JXDatePicker anlegen
        datePicker.addActionListener(new ActionListener() {
        	public void actionPerformed(ActionEvent e) {
        		datePicker.setToolTipText(datePicker.getDate().toString());
        	}//actionPerformed
        });//actionPerformed
        
        datumPanel.add(datePicker);		//erstes Datumsfeld in das datumPanel schieben


HTML:
		zeitÜbernehmenButton.addActionListener(new ActionListener() {
			public void actionPerformed(ActionEvent e){
				//dispose(); //Zeitraumfenster schließen
		        Date start = new Date();
		        start = datePicker.getDate();
		        Date ende = new Date();
		        start = datePicker.getDate();
				
			    System.out.println(start);
			    System.out.println(ende);
		        
	        }//actionPerformed
		});//ActionListener
Hier bekomme ich schonmal das datum im Format Date angezeigt.

Calendar:
HTML:
Calendar cal = Calendar.getInstance();
		cal.clear();
		cal.setTime(ZeitraumGUI.start);		// Monate von 0 - 11
		Date start = cal.getTime();

		cal.clear();
		cal.set(ZeitraumGUI.ende);			// Monate von 0 - 11
		Date end = cal.getTime();
Jedoch bekomme ich eine Nullpointerexeption. Wenn ich die Werte in der ZeitraumGUI einstelle, dann werden die doch in den Variablen start und ende gespeichert und dann tufe ich diese in einer anderen Klasse auf mit ZeitraumGUI.start. Jedoch scheint es so als ob nichts in start gespeichert wird...Kann mir da auch nicht weiterhelfen. Für andere Lösungen,Vorschläge bin ich offen und dankbar!

Gruß
holzart
 
Zuletzt bearbeitet:
Moin,

ich habe mir eine ZeitraumGUI erstellt und dort den JXDatePicker mit eingebaut. So nun kann man den Zeitraum bestimmen und diese Werte sollen beim klick auf "Einstellungen übernemen" gespeichert werden.
Ich komme aber nicht an die Daten. Ich brauche das Jahr, den Monat und den Tag. Diese Werte möchte ich an den Calendar übergeben, da nur der Calendar mit dem Rest der Software kompatibel ist. Hier mal die wichtigsten Codeschnipsel:

ZeitraumGUI:
HTML:
        final JPanel datumPanel = new JPanel();        //neues JPanel für das datum anlegen
        
        final JXDatePicker datePicker = new JXDatePicker(); //neues Objekt der Klasse JXDatePicker anlegen
        datePicker.addActionListener(new ActionListener() {
            public void actionPerformed(ActionEvent e) {
                datePicker.setToolTipText(datePicker.getDate().toString());
            }//actionPerformed
        });//actionPerformed
        
        datumPanel.add(datePicker);        //erstes Datumsfeld in das datumPanel schieben
HTML:
        zeitÜbernehmenButton.addActionListener(new ActionListener() {
            public void actionPerformed(ActionEvent e){
                //dispose(); //Zeitraumfenster schließen
                Date start = new Date();
                start = datePicker.getDate();
                Date ende = new Date();
                start = datePicker.getDate();
                
                System.out.println(start);
                System.out.println(ende);
                
            }//actionPerformed
        });//ActionListener
Hier bekomme ich schonmal das datum im Format Date angezeigt.

Calendar:
HTML:
Calendar cal = Calendar.getInstance();
        cal.clear();
        cal.setTime(ZeitraumGUI.start);            // Monate von 0 - 11
        Date start = cal.getTime();

        cal.clear();
        cal.set(ZeitraumGUI.ende);            // Monate von 0 - 11
        Date end = cal.getTime();
Jedoch bekomme ich eine Nullpointerexeption. Wenn ich die Werte in der ZeitraumGUI einstelle, dann werden die doch in den Variablen start und ende gespeichert und dann tufe ich diese in einer anderen Klasse auf mit ZeitraumGUI.start. Jedoch scheint es so als ob nichts in start gespeichert wird...Kann mir da auch nicht weiterhelfen. Für andere Lösungen,Vorschläge bin ich offen und dankbar!

Gruß
holzart

hmm, so wirklich durchblicke Deine Codeschnipsel nicht ...
- wo genau tritt denn die Exception auf:confused:
hier: cal.set(ZeitraumGUI.ende); // Monate von 0 - 11 :confused:
Dann würde ich mal vermuten, dass "ZeitrauzmGUI" zuvor nicht instantiiert wurde (!)

- Dein ende-Datum wird nie gefüllt (!)
Date ende = new Date();
start = datePicker.getDate(); // sollte wohl "ende" heißen, oder

- diesen Teil verstehe ich gar nicht:
Java:
Calendar cal = Calendar.getInstance();
cal.clear();
cal.setTime(ZeitraumGUI.start);            // Monate von 0 - 11
Date start = cal.getTime();
cal.clear();
cal.set(ZeitraumGUI.ende);            // Monate von 0 - 11
Date end = cal.getTime();
wenn Du hier ein Date braucht, warum dann der Umweg über Calendar :confused:
Dass geht dann doch einfacher und direkter, oder :confused:
Java:
Date start = ZeitraumGUI.start;
Date end = ZeitraumGUI.ende;

Gruß
Klaus
 
Hi Klaus,

ja das eine sollte ende heißen ist aber im original auch richtig. also ich saß gestern noch bis in die puppen an dem ding und mein problem ist vielleicht auch ganz simpel aber ich kriegs einfach nicht hin.

Logischerweise sollte es auch ohne Calendar gehen, das hab ich auch probiert aber da mache ich wohl was falsch. Also es geht eigentlich darum dass ich von der Klasse ZeitraumGUI die Date werte brauche und die
rüberschiebe in die Klasse Aktiendiagramm. Und das kommentar mit den Monaten stimmt nicht, sry. So klappts nicht:

ZeitraumGUI
Java:
		zeitÜbernehmenButton.addActionListener(new ActionListener() {
			public void actionPerformed(ActionEvent e){
				
				Date start = new Date();
		                start = datePicker.getDate();
Das Startdatum wird in der Klasse Zeitraum schonmal richtig eingelesen und dort kann ich es auch mittels system.out anzeigen lassen. Jedoch kann ich es nicht in der Klasse Aktiendiagramm auslesen:

Aktiendiagramm
Java:
Date start = ZeitraumGUI.start;

hab es gestern noch mit ner methode versucht aber komm da grad nicht klar. Ist auch noch mit calendar:

ZeitraumGUI:

Java:
			zeitÜbernehmenButton.addActionListener(new ActionListener() {
			public void actionPerformed(ActionEvent e){
				
			Date start = new Date();
		        start = datePicker.getDate();
		        Date ende = new Date();
		        ende = datePicker2.getDate();
		        Aktiendiagramm.holeZeit(start, ende);

Aktiendiagramm:
Java:
public static void holeZeit(Date startDate, Date endDate) {

    	Calendar cal = Calendar.getInstance();
    	cal.clear();
    	cal.setTime(startDate);
    	Date startTime = cal.getTime();
    	
    	cal.clear();
    	cal.setTime(endDate);			
    	Date endTime = cal.getTime();
    	
    	System.out.println(startTime);
    	System.out.println(endTime);
	}
Er gibt mir wenigstens die Daten richtig aus aber ich kann in der Klasse Aktiendiagramm nicht auf Date endtime zugreifen. Warum? Oder befinden sich die Daten eigentlich noch in der ZeitraumGUI?
Das heißt ich hab sie nicht übergeben sondern nur im Aktiendiagramm bearbeitet?
Java:
    private XYDataset createDataset() {

    	// erzeuge ArrayListe mit "Aktien"	
		ArrayList<Aktie> AktienListe = new ArrayList<Aktie>();
		
		// füge Aktien in Liste
		AktienListe.add(Aktie1);
		AktienListe.add(Aktie2);
		AktienListe.add(Aktie3);
		
		// Lade Daten der Aktien in Serien
       	final TimeSeries s1 = ladeSerien(startTime,ZeitraumGUI.endTime, AktienListe.get(0));
       	final TimeSeries s2 = ladeSerien(startTime,ZeitraumGUI.endTime, AktienListe.get(1));
       	final TimeSeries s3 = ladeSerien(startTime,ZeitraumGUI.endTime, AktienListe.get(2));
       
        TimeSeriesCollection ergebnis = new TimeSeriesCollection();
        // füge Serien ein
        ergebnis.addSeries(s1);
        ergebnis.addSeries(s2);
        ergebnis.addSeries(s3);
         
        return ergebnis;
    }
an ladeSerien, das auch in Aktiendiagramm ist, sollen die beiden daten übergeben werden im Endeffekt.
Wenn jemand mehr Code braucht poste ich mal 3 Klassen.

Gruß
Andi
 
Zuletzt bearbeitet:
Moin Andi,

hmm, so ganz verstehe ich das Problem nicht resp. denke, dass der Knackpunkt dann woanders liegt ...
Wenn Du schon Werte vom Typ "Date" hast, ist es IMHO völlig überflüssig, hieraus ein "Calendar"-Obj. zu machen, dass dann sofort wieder zu "Date" wird!
Wenn es ein "Integer" wäre, würdest Du ja (vermutlich :)) auch keine String daraus machen, um den dann wieder in einen Integer zu verwandeln ...

Logischerweise sollte es auch ohne Calendar gehen, das hab ich auch probiert aber da mache ich wohl was falsch. Also es geht eigentlich darum dass ich von der Klasse ZeitraumGUI die Date werte brauche und die rüberschiebe in die Klasse Aktiendiagramm. Und das kommentar mit den Monaten stimmt nicht, sry. So klappts nicht
Was genau heißt denn "klappt nicht" ?
Gibt 'ne Exception? Wie sehe die Werte im Debugger aus?

Und die Funktion "HoleZeit" macht so in meinen Augen auch keinen Sinn, da Du einfach in ihr neue Date-Variablen deklarierst und setzt. Am Ende der Funktion werden diese aber vom GC wieder gelöscht!

Suchst Du vlt. sowas:
Java:
...
Date startTime = new Date();
Date endTime = new Date();
...
public static void holeZeit( Date startDate, Date endDate ) 
{
       // hier event. auch mal get/setDay, get/setHour etc. verwenden !!
       startTime = startDate();
       endTime = endDate();
}
...
System.out.println( startTime );
System.out.println( endTime );

Gruß
Klaus
 
Hi Klaus,

ich versteh die Java Welt nicht mehr :D:D:D ich habs meiner Meinung nach tausend mal so probeirt aber anscheinend nicht richtig...naja wie dem auch jetzt funktioniert es danke Klaus
Aber startTime = startDate();
endTime = endDate();

sollten keine Methoden sein ^^
so gings :

startTime = startDate;
endTime = endDate;
start und endTime auf static geschaltet und nu läufts ^^ dank Klaus kann man jetzt Aktienverläufen einen beliebigen Zeitraum zuordnen :D
 
Zurück