Uhrzeit und Datum aktualisieren

27sharp

Mitglied
Hallo Leute,

Ich stehe vor einem Problem. Ich möchte die Uhrzeit und das Datum in einem JLabel aktualisieren.

Die Uhrzeit konnte ich mit TimerTask aktualisieren. Die run() Methode wiederhole ich jede Sekunde.

Nun weiß ich nicht, wie ich das Datum aktualisieren soll.
Wie könnte ich es am besten realisieren?
 
So ich hatte das Problem mit der Json Datei: http://www.java-forum.org/thema/mehrere-json-werte-parsen.169934/
Ich habe dies auch bis jetzt gut gelöst.
So sieht das dann aus:

Java:
public  void getJson(){
    
     try {
        Object obj = parser.parse(new FileReader("text.txt"));
    

        JSONArray array = (JSONArray)obj;

    
        for(int i = 0;i<= array.size()-1;i++){
        
            JSONObject tmpObject = (JSONObject) array.get(i);
            datum = (String) tmpObject.get("Datum");
            Uhr1= (String) tmpObject.get("Uhr1");
            Uhr2 = (String) tmpObject.get("Uhr2");
            Uhr3 = (String) tmpObject.get("Uhr3");
            Uhr4 = (String) tmpObject.get("Uhr4");
            Uhr5 = (String) tmpObject.get("Uhr5");
            Uhr6 = (String) tmpObject.get("Uhr6");


            list.add(datum);
            list.add(Uhr1);
            list.add(Uhr2);
            list.add(Uhr3);
            list.add(Uhr4);
            list.add(Uhr5);
            list.add(Uhr6);
        
        }
    
    
    

    } catch (Exception e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }
    }
    public void getVakit(String date){
        indexOfDatum = list.indexOf(date);
         datum = list.get(indexOfDatum );
         Uhr1 = list.get(indexOfDatum +1);
         Uhr2= list.get(indexOfDatum +2);
         Uhr3= list.get(indexOfDatum +3);
         Uhr4= list.get(indexOfDatum +4);
         Uhr5= list.get(indexOfDatum +5);
         Uhr6= list.get(indexOfDatum +6);
    }

Diese Klasse fassse ich dann in einer anderen Klassen mit dem Gui zusammen:
Java:
public class Controller extends TimerTask  {
    private MainView view;
    private JsonParser jp;
    private Kalender ka;
    private Thread thread;
    public Controller(MainView view,JsonParser jp){
        this.view = view;
        this.jp = jp;
//        thread = new Thread(this);
//        thread.start();
        Timer timer1 = new Timer();
        timer1.scheduleAtFixedRate(this, 0, 1000);
    

    }

    public void updateView(){
        jp.getJson();
    
        view.setUhr1(jp.getUhr1());
        view.setGUhr2(jp.getUhr2());
        view.setUhr3(jp.getUhr3());
        view.setIUhr4(jp.getUhr4());
        view.setUhr5(jp.getUhr5());
        view.setUhr6(jp.getUhr6());
    

    
    }
    public void updateTime(){
    
    }

    @Override
    public void run() {
    
            view.setZeit(ka.getTime());
        
        
    }
}

Das Programm wird ständig laufen. Ich muss dem nur sagen, wann das neue Datum mit den Uhrzeiten genommen wird..
 
Zuletzt bearbeitet:
Edit:
Ich habe es jetzt so gelöst und es funktioniert:
Java:
@Override
    public void run() {
       
            view.setZeit("Zeit: " + Kalender.getTime());
            if(Kalender.getTime().equals("00:00:00")){
                updateView();
            }
Geht das so in Ordnung?
 
Ich würde mir den Tag merken, wenn du das Programm startest und in deiner If-Abfrage schauen, ob sich der Tag geändert hat. Wenn ja, update machen und neuer Tag wird gemerkt.

So wie deine Abfrage ist, könnte es mal passieren, daß die Zeit nicht genau 00:00:00 ist und dann gibts kein Update.
 
Also jetzt sieht es so aus:
Java:
public class Controller extends TimerTask  {
    private MainView view;
    private JsonParser jp;
    private static String aktDatum;
    public Controller(MainView view,JsonParser jp){
        this.view = view;
        this.jp = jp;
     
        Timer timer1 = new Timer();
        timer1.scheduleAtFixedRate(this, 0, 1000);
        jp.getJson();
        aktDatum = Kalender.getDatum();

  }    

   @Override
   public void run() {
   
       view.setZeit("Zeit: " + Kalender.getTime());
       if(!Kalender.getDatum().equals(aktDatum)){
         updateView();
         aktDatum = Kalender.getDatum();
       
       }
   }
 
    }

Die Main:
Java:
public class Main {
    private String aktDatum;
    public static void main(String[] args) {
        JsonParser jp = new JsonParser();
        MainView view = new MainView();
        Controller controller = new Controller(view, jp);
        controller.updateView();
       
       
    }

}
Ist das so Okay? Ich prüfe jetzt jede Sekunde, ob sich das Datum geändert hat.
 
Ja sollte so auch funktionieren.

Natürlich prüft er nun > 80k mal ob sich das Datum geändert hat. Wenn der Task wirklich jede Sekunde läuft, dann sollte es reichen den Wechsel von "23:59:59" -> "00:00:00" zu überprüfen.
 
Vielen Dank für die ganzen Antworten!
Eine Frage hätte ich da noch.

Ich habe jetzt versucht das Projekt zu exportieren, damit ich es als .jar Datei ausführen kann.
Nun passiert aber nichts beim Doppelklick auf die Datei, obwohl andere Projekte starten.
Mit dem cmd Befehl habe ich es auch schon versucht, doch nicht passiert.
 

Zurück
Oben