Sleep Funktion / Thread-Problem !

Status
Nicht offen für weitere Antworten.

achim1976

Mitglied
Hallo,
ich habe einen Klasse Counter geschrieben, in der es Funktionen gibt, dass ich ein Datum eingebe und mir Java dann mit den Datums- und Zeitklassen die Zeit bis dahin ausrechnet.
Dann habe ich eine Klasse Zeiteingabe, diese ist eine grafische Oberfläche mit nem JFrame mit 6 Eingabefeldern (Monat, Tag, Jahr usw), wenn ich dort dann den button drücke "berechen", dann soll ein neues Fenster aufgehen, wo dann die Zeit rückwärtsläuft...Dieses zweite Fenster hat eine eigene Klasse... das problem ist glaube ich, dass ich das erste Fenster einfach auf visible (false) setze, anstatt es zu beenden.
kann mir jemand sagen wie das geht?
weil ohne dass ich dieses Fenster beende funktioniert in dem 2.Fenster die sleep() Methode nicht!

ps: ich programmier noch nicht so lange mit java!

lg, achim
 

Quaxli

Top Contributor
Nimm mal statt setVisible(false) lieber dispose().

Wenn das nicht hilft, poste mal ein kleines Beispielprogramm.

<edit>
Ich wüßte jetzt aber nicht, warum sich die Sichtbarkeit eines Frames auf eine sleep-Methode auswirken sollte.
Vielleicht solltest Du auf jeden Fall mal etwas Code posten, um den einen oder anderen Tipp zu bekommen.
</edit>
 
S

SlaterB

Gast
sleep() sollte unabhängig von der Anzahl der Fenster funktionieren,
wobei natürlich zu empfehlen ist, nicht den AWT-Thread, der die GUI steuert, schlafen zu legen,
sondern einen separaten Thread

poste doch mal deine bisherigen Klassen als lauffähiges Testprogramm,
ohne großes Layout oder ähnlich unnötige Bestandteile
 

achim1976

Mitglied
ich bin gerade dabei alles in ein fenster zu legen, ich leere dann den container und baue dann einfach die zweite klasse in methoden auf...ist zwar unüberischtlich aber vllt funktionier es ja.

mit dispose() hat es auch nicht geklappt!
ich halte euch auf dem laufenden, wenn es immer noch nicht geht poste ich mal den code :)
 

achim1976

Mitglied
so hier ist der code!!!
ich hab keine ahnung warum es nicht geht, ich hab schon alles mögliche probiert!
es liegt eindeutig an dieser Thread.sleep() Funktion!!!
Code:
package Counter;

import java.awt.Color;
import java.awt.Container;
import java.awt.Font;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JTextField;

public class ZielDatum extends Thread{
	public JFrame window = new JFrame("Counter by annica");
	
	private JTextField tag = new JTextField();
	private JTextField monat = new JTextField();
	private JTextField jahr = new JTextField();
	private JTextField sekunde = new JTextField();
	private JTextField stunde = new JTextField();
	private JTextField minute = new JTextField();
	
	
	private final JLabel TAG=new JLabel("Tag");
	private final JLabel MONAT=new JLabel("Monat");
	private final JLabel JAHR=new JLabel("Jahr");
	private final JLabel SEKUNDE=new JLabel("Sekunde");
	private final JLabel MINUTE=new JLabel("Minute");
	private final JLabel STUNDE=new JLabel("Stunde");
	
	private JButton zeit= new JButton("Countdown");
	
	
	public ZielDatum() {
		// schliessen-Funktion hinzuf�gen
		window.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		// Fenster sichtbar machen
		window.setVisible(true);
		// Fenster Groesse setzen
		window.setSize(230, 200);
		// Fensterplatz setzen
		window.setLocation(400, 300);

		kreieren();
	}
	
	public void kreieren() {
		Container cp = window.getContentPane();
		cp.setLayout(null);
		
		tag.setBounds(35, 75, 30, 30);
		cp.add(tag);
		TAG.setBounds(35, 50, 30, 30);
		cp.add(TAG);
	
		monat.setBounds(80, 75, 30, 30);
		cp.add(monat);
		MONAT.setBounds(80, 50, 40, 30);
		cp.add(MONAT);
		
		jahr.setBounds(125, 75, 60, 30);
		cp.add(jahr);
		JAHR.setBounds(125, 50, 30, 30);
		cp.add(JAHR);
		
		stunde.setBounds(35, 25, 30, 30);
		cp.add(stunde);
		STUNDE.setBounds(35, 0, 50, 30);
		cp.add(STUNDE);
		
		minute.setBounds(80, 25, 30, 30);
		cp.add(minute);
		MINUTE.setBounds(80, 0, 50, 30);
		cp.add(MINUTE);

		sekunde.setBounds(125, 25, 30, 30);
		cp.add(sekunde);
		SEKUNDE.setBounds(125, 0, 50, 30);
		cp.add(SEKUNDE);
		
		zeit.setBounds(35, 120, 150, 25);
		zeit.setText("Countdown starten");
		cp.add(zeit);
		zeit.addActionListener(new ActionListener() {
			public void actionPerformed(ActionEvent evt) {
				Countdown_startActionPerformed(evt);
			}
		});
		
		window.repaint();
	}
	
	
	public void Countdown_startActionPerformed(ActionEvent evt) {
		int zeit[]=new int [6];
		zeit[0]=Integer.parseInt(tag.getText());
		zeit[1]=Integer.parseInt(monat.getText());
		zeit[2]=Integer.parseInt(jahr.getText());
		zeit[3]=Integer.parseInt(stunde.getText());
		zeit[4]=Integer.parseInt(minute.getText());
		zeit[5]=Integer.parseInt(sekunde.getText());
		
		//das alte fenster abschießen
		window.dispose();
		
		//die neue oberfläche erzeugen
		Oberflaeche ober = new Oberflaeche(zeit);
		try{
			while(true){
				ober.zeit();
				window.repaint();

				Thread.sleep(1000);
			}
		}
		catch(Exception e){

		}
		


	}
	
	public static void main(String[] args) {
		ZielDatum ziel= new ZielDatum();
	}
}





Code:
package Counter;

import javax.swing.*;

import java.awt.*;
import java.awt.event.*;
import java.io.*;

public class Oberflaeche {

	private int zeit[] = new int[6];

	// Fenter erstellen
	public JFrame window = new JFrame("Counter by annica");

	private JLabel tag=new JLabel();
	private JLabel monat=new JLabel();
	private JLabel jahr=new JLabel();
	private JLabel stunde=new JLabel();
	private JLabel minute=new JLabel();
	private JLabel sekunde=new JLabel();

	private final JLabel TAG =new JLabel("Tage");
	private final JLabel MONAT =new JLabel("Monate");
	private final JLabel JAHR=new JLabel("Jahre");
	private final JLabel STUNDE=new JLabel("Stunden");
	private final JLabel MINUTE=new JLabel("Minuten");
	private final JLabel SEKUNDEN=new JLabel("Sekunden");


	public Oberflaeche(int[] zeit) {
		this.zeit=zeit;

		// schliessen-Funktion hinzufuegen
		window.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		// Fenster sichtbar machen
		window.setVisible(true);
		// Fenster Groesse setzen
		window.setSize(230, 150);
		// Fensterplatz setzen
		window.setLocation(400, 300);

		kreieren();
	}

	public void kreieren() {
		Container cp = window.getContentPane();
		cp.setLayout(null);

		STUNDE.setBounds(5, 5, 286, 30);
		cp.add(STUNDE);
		stunde.setBounds(5, 25, 286, 30);
		cp.add(stunde);

		MINUTE.setBounds(60, 5, 286, 30);
		cp.add(MINUTE);
		minute.setBounds(60, 25, 286, 30);
		cp.add(minute);

		SEKUNDEN.setBounds(110, 5, 286, 30);
		cp.add(SEKUNDEN);
		sekunde.setBounds(110, 25, 286, 30);
		cp.add(sekunde);

		TAG.setBounds(5, 55, 200, 25);
		cp.add(TAG);
		tag.setBounds(5, 75, 200, 25);
		cp.add(tag);


		MONAT.setBounds(40, 55, 200, 25);
		cp.add(MONAT);
		monat.setBounds(40, 75, 200, 25);
		cp.add(monat);

		JAHR.setBounds(90, 55, 200, 25);
		cp.add(JAHR);
		jahr.setBounds(90, 75, 200, 25);
		cp.add(jahr);

		JAHR.setFont( new Font("Georgia", Font.BOLD, 15) );
		JAHR.setForeground(Color.magenta);


		window.repaint();
	}

	public void zeit(){
		Counter count = new Counter(this.zeit);
		int[] bis_dato = count.wielangenoch();
		tag.setText(""+bis_dato[0]);
		monat.setText(""+bis_dato[1]);
		jahr.setText(""+bis_dato[2]);
		stunde.setText(""+bis_dato[3]);
		minute.setText(""+bis_dato[4]);
		sekunde.setText(""+bis_dato[5]);
	}
	
	


	public static void main(String args[]) {
	
	}


}


[/code]
 
G

Gast2

Gast
Hallo,

1. weiß ich nacht was deine Klasse Counter macht
2. Benutzt du deinen Thread nicht, weiß nicht warum du davon erben lässt.
3. hast du eine endlosschleife
4. hab dein code mal etwas verbessert ohne jetzt nach der logik zu schauen

Code:
import javax.swing.*;

import java.awt.*;
import java.awt.event.*;
import java.io.*;

public class Oberflaeche extends JFrame{

   private int zeit[] = new int[6];

   private JLabel tag=new JLabel();
   private JLabel monat=new JLabel();
   private JLabel jahr=new JLabel();
   private JLabel stunde=new JLabel();
   private JLabel minute=new JLabel();
   private JLabel sekunde=new JLabel();

   private final JLabel TAG =new JLabel("Tage");
   private final JLabel MONAT =new JLabel("Monate");
   private final JLabel JAHR=new JLabel("Jahre");
   private final JLabel STUNDE=new JLabel("Stunden");
   private final JLabel MINUTE=new JLabel("Minuten");
   private final JLabel SEKUNDEN=new JLabel("Sekunden");


   public Oberflaeche(int[] zeit) {
     super("Counter by annica");

     this.zeit=zeit;

      // schliessen-Funktion hinzufuegen
      setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
      // Fenster Groesse setzen
      setSize(230, 150);
      // Fensterplatz setzen
      setLocation(400, 300);

      kreieren();

      // Fenster sichtbar machen
      setVisible(true);
   }

   public void kreieren() {
      Container cp = getContentPane();
      cp.setLayout(null);

      STUNDE.setBounds(5, 5, 286, 30);
      cp.add(STUNDE);
      stunde.setBounds(5, 25, 286, 30);
      cp.add(stunde);

      MINUTE.setBounds(60, 5, 286, 30);
      cp.add(MINUTE);
      minute.setBounds(60, 25, 286, 30);
      cp.add(minute);

      SEKUNDEN.setBounds(110, 5, 286, 30);
      cp.add(SEKUNDEN);
      sekunde.setBounds(110, 25, 286, 30);
      cp.add(sekunde);

      TAG.setBounds(5, 55, 200, 25);
      cp.add(TAG);
      tag.setBounds(5, 75, 200, 25);
      cp.add(tag);


      MONAT.setBounds(40, 55, 200, 25);
      cp.add(MONAT);
      monat.setBounds(40, 75, 200, 25);
      cp.add(monat);

      JAHR.setBounds(90, 55, 200, 25);
      cp.add(JAHR);
      jahr.setBounds(90, 75, 200, 25);
      cp.add(jahr);

      JAHR.setFont( new Font("Georgia", Font.BOLD, 15) );
      JAHR.setForeground(Color.magenta);
   }

   public void zeit(){
      Counter count = new Counter(this.zeit);
      int[] bis_dato = count.wielangenoch();
      tag.setText(""+bis_dato[0]);
      monat.setText(""+bis_dato[1]);
      jahr.setText(""+bis_dato[2]);
      stunde.setText(""+bis_dato[3]);
      minute.setText(""+bis_dato[4]);
      sekunde.setText(""+bis_dato[5]);
   }


}

Code:
import java.awt.Color;
import java.awt.Container;
import java.awt.Font;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JTextField;

public class ZielDatum extends JFrame{

   private JTextField tag = new JTextField();
   private JTextField monat = new JTextField();
   private JTextField jahr = new JTextField();
   private JTextField sekunde = new JTextField();
   private JTextField stunde = new JTextField();
   private JTextField minute = new JTextField();


   private final JLabel TAG=new JLabel("Tag");
   private final JLabel MONAT=new JLabel("Monat");
   private final JLabel JAHR=new JLabel("Jahr");
   private final JLabel SEKUNDE=new JLabel("Sekunde");
   private final JLabel MINUTE=new JLabel("Minute");
   private final JLabel STUNDE=new JLabel("Stunde");

   private JButton zeit= new JButton("Countdown");

   private Thread thread = new Thread(new Runnable(){

    public void run()
    {

      int zeit[]=new int [6];
      zeit[0]=Integer.parseInt(tag.getText());
      zeit[1]=Integer.parseInt(monat.getText());
      zeit[2]=Integer.parseInt(jahr.getText());
      zeit[3]=Integer.parseInt(stunde.getText());
      zeit[4]=Integer.parseInt(minute.getText());
      zeit[5]=Integer.parseInt(sekunde.getText());

      //das alte fenster abschießen
      dispose();

      //die neue oberfläche erzeugen
      Oberflaeche ober = new Oberflaeche(zeit);




        // ENDLOSSCHLEIFE
         while(true){
            ober.zeit();
            repaint();

            try
            {
              Thread.sleep(1000);
            }
            catch (InterruptedException e)
            {
              // TODO Auto-generated catch block
              e.printStackTrace();
            }
         }
    }

   });

   public ZielDatum() {

     super("Counter by annica");
     // schliessen-Funktion hinzuf�gen
      setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
      // Fenster Groesse setzen
      setSize(230, 200);
      // Fensterplatz setzen
      setLocation(400, 300);

      kreieren();

      // Fenster sichtbar machen
      setVisible(true);
   }

   public void kreieren() {
      Container cp = getContentPane();
      cp.setLayout(null);

      tag.setBounds(35, 75, 30, 30);
      cp.add(tag);
      TAG.setBounds(35, 50, 30, 30);
      cp.add(TAG);

      monat.setBounds(80, 75, 30, 30);
      cp.add(monat);
      MONAT.setBounds(80, 50, 40, 30);
      cp.add(MONAT);

      jahr.setBounds(125, 75, 60, 30);
      cp.add(jahr);
      JAHR.setBounds(125, 50, 30, 30);
      cp.add(JAHR);

      stunde.setBounds(35, 25, 30, 30);
      cp.add(stunde);
      STUNDE.setBounds(35, 0, 50, 30);
      cp.add(STUNDE);

      minute.setBounds(80, 25, 30, 30);
      cp.add(minute);
      MINUTE.setBounds(80, 0, 50, 30);
      cp.add(MINUTE);

      sekunde.setBounds(125, 25, 30, 30);
      cp.add(sekunde);
      SEKUNDE.setBounds(125, 0, 50, 30);
      cp.add(SEKUNDE);

      zeit.setBounds(35, 120, 150, 25);
      zeit.setText("Countdown starten");
      cp.add(zeit);
      zeit.addActionListener(new ActionListener() {
         public void actionPerformed(ActionEvent evt) {
            thread.run();
         }
      });

   }


   public static void main(String[] args) {
      ZielDatum ziel= new ZielDatum();
   }
}

vielleicht hilft es dir ja weiter
 

achim1976

Mitglied
die klasse counter hat jetzt erstmal noch ein paar kleine fehler, aber rein vom prinzip her müsste er mir ja di ezeit anzeigen!
wenn ich das mit dem sleep weglasse zeigt er sie mir auch an!

Code:
package Counter;

import java.text.SimpleDateFormat;
import java.util.*;

public class Counter {
	private int[] date = new int[6];
	final int[] TAGE_DER_MONATE_S = new int[] { 31, 29, 31, 30, 31, 30, 31, 31,
			30, 31, 30, 31 };
	final int[] TAGE_DER_MONATE = new int[] { 31, 28, 31, 30, 31, 30, 31, 31,
			30, 31, 30, 31 };

	public Counter(int[] date) {
		this.date = date;
	}

	public int[] gibaktuellesdatum() {
		int[] datum = new int[6];

		// hier werden nun der reihe nach alle relevanten aktuellen Zeitangaben
		// in ein Array datum gespeichert
		// dd = Tag
		SimpleDateFormat date = new SimpleDateFormat("dd");
		datum[0] = Integer.parseInt(date.format(new Date()));

		// MM = Monat
		date = new SimpleDateFormat("MM");
		datum[1] = Integer.parseInt(date.format(new Date()));

		// yyyy = Jahr
		date = new SimpleDateFormat("yyyy");
		datum[2] = Integer.parseInt(date.format(new Date()));

		// kk = Stunden (kk wegen 24h, sonst hh, dann aber von 0-11)
		date = new SimpleDateFormat("kk");
		datum[3] = Integer.parseInt(date.format(new Date()));

		// mm = Minunten
		date = new SimpleDateFormat("mm");
		datum[4] = Integer.parseInt(date.format(new Date()));

		// ss = Sekunden
		date = new SimpleDateFormat("ss");
		datum[5] = Integer.parseInt(date.format(new Date()));

		return datum;
	}

	public int[] wielangenoch() {
		int tage = 0;
		int[] anz_tage = new int[12];

		int[] zeit = new int[6];
		int[] aktuell = this.gibaktuellesdatum();

		if (zeit[2] % 4 == 0) {
			anz_tage = this.TAGE_DER_MONATE_S;
		} else {
			anz_tage = this.TAGE_DER_MONATE;
		}
		// ich beginne mit den berechnungen der Sekunden, weil das die kleinste
		// Zeiteinheit ist, arbeite mich dann hoch...
		// Sekunden
		zeit[5] = date[5] - aktuell[5];
		if (zeit[5] < 0) {
			zeit[3] -= 1;
			zeit[5] = this.sekunde_sekunde(date[5], aktuell[5]);
		}

		
		
		
		// Minute
		// hier muss überprüft werden ob die Variable negativ wird, weil dann
		// die Zeit anders berechnet wird
		zeit[4] += date[4] - aktuell[4];
		if (zeit[4] < 0) {
			zeit[3] -= 1;

			zeit[4] = this.minute_minute(date[4], aktuell[4]);
		}
		
		// Stunden
		zeit[3] += date[3] - aktuell[3];
		if (zeit[3] < 0) {
			zeit[0] -= 1;
			zeit[3] = this.stunde_stunde(date[3], aktuell[3]);
		}

		

		// Tag
		zeit[0] += date[0] - aktuell[0];
		if (zeit[0] < 0) {
			zeit[1] -= 1;
			zeit[0] = this.tag_tag(date[0], date[1], date[2], aktuell[0]);
		}

		// dann mache ich bei den Monaten weiter...
		// Monat
		zeit[1] += date[1] - aktuell[1];
		if (zeit[1] < 0) {
			zeit[2] -= 1;
			zeit[1] = this
					.monat_monat(date[1], date[2], aktuell[1], aktuell[2]);
		}

		// Jahr
		zeit[2] += date[2] - aktuell[2];

		return zeit;
	}

	/*private int wievielterTagImJahr(int tag, int monat, int jahr) {
		int anzahl = 0;
		int[] anz_tage = new int[12];
		if (jahr % 4 == 0) {
			anz_tage = this.TAGE_DER_MONATE_S;
		} else {
			anz_tage = this.TAGE_DER_MONATE;
		}
		anzahl += tag;

		int zaehler = 0;
		while (zaehler != monat - 1) {
			anzahl += anz_tage[zaehler];
			zaehler++;
		}
		System.out.println(anzahl);
		return anzahl;
	}
	*/

	// die mit -1- am ende gekennzeichneten Variablen geben immer das spätere
	// Datum an, dass mit der -2- am ende stellt das aktuelle dar
	private int tag_tag(int tag1, int monat1, int jahr1, int tag2) {
		//System.out.println("tag1 "+tag1+", monat1 "+monat1+" ,jahr1 "+jahr1+" ,tag2 "+tag2);
		int anz = 0;

		int[] anz_tage1 = this.TAGE_DER_MONATE;
		if (jahr1 % 4 == 0) {
			anz_tage1 = this.TAGE_DER_MONATE_S;
		}
		anz = anz_tage1[monat1 - 1] - tag1 + tag2;
//		System.out.println(anz);
//		System.out.println();
		return anz;
	}

	private int monat_monat(int monat1, int jahr1, int monat2, int jahr2) {
		int anz = 0;
		return anz;
	}

	private int stunde_stunde(int stunde1, int stunde2) {
//		System.out.println("stunde1 "+stunde1 +" stunde2 " +stunde2);
		int anz = 0;
		anz = 24 - stunde2 + stunde1;
//		System.out.println("stunden "+anz);
//		System.out.println();
		return anz;
	}

	private int minute_minute(int minute1, int minute2) {
//		System.out.println("min "+minute1 +" min2 " +minute2);
		int anz = 0;
		anz = 60 - minute2 + minute1;
//		System.out.println("min "+anz);
//		System.out.println();
		return anz;
	}

	private int sekunde_sekunde(int sekunde1, int sekunde2) {
//		System.out.println("sek1 "+sekunde1 +" sek2 " +sekunde2);
		int anz = 0;
		
		anz = 60 - sekunde2 + sekunde1;
//		System.out.println("sek "+anz);
//		System.out.println();
		return anz;
	}
}
 
G

Gast2

Gast
wie gesagt du benutzt nicht deinen eigenen thread dein extends thread macht überhaupt keinen sinn...
darum solltest du wie oben einen EIGENEN thread machen dann funktioniert auch dein sleep
 
G

Gast2

Gast
oben ist ein fehler thread werden mir start() gestartet nicht mit run()
 
G

Gast2

Gast
schau das müsste gehen schaus dir an wenn du fragen hast dann frag ^^

Code:
import java.awt.Color;
import java.awt.Container;
import java.awt.Font;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JTextField;
import javax.swing.SwingUtilities;

public class ZielDatum extends JFrame{

   private JTextField tag = new JTextField();
   private JTextField monat = new JTextField();
   private JTextField jahr = new JTextField();
   private JTextField sekunde = new JTextField();
   private JTextField stunde = new JTextField();
   private JTextField minute = new JTextField();


   private final JLabel TAG=new JLabel("Tag");
   private final JLabel MONAT=new JLabel("Monat");
   private final JLabel JAHR=new JLabel("Jahr");
   private final JLabel SEKUNDE=new JLabel("Sekunde");
   private final JLabel MINUTE=new JLabel("Minute");
   private final JLabel STUNDE=new JLabel("Stunde");

   private JButton zeit= new JButton("Countdown");

   private Oberflaeche  ober;
   private Counter count;

   public ZielDatum() {

     super("Counter by annica");
     // schliessen-Funktion hinzuf�gen
      setDefaultCloseOperation(DISPOSE_ON_CLOSE);
      // Fenster Groesse setzen
      setSize(230, 200);
      // Fensterplatz setzen
      setLocation(400, 300);

      kreieren();

      // Fenster sichtbar machen
      setVisible(true);
   }

   public void kreieren() {
      Container cp = getContentPane();
      cp.setLayout(null);

      tag.setBounds(35, 75, 30, 30);
      cp.add(tag);
      TAG.setBounds(35, 50, 30, 30);
      cp.add(TAG);

      monat.setBounds(80, 75, 30, 30);
      cp.add(monat);
      MONAT.setBounds(80, 50, 40, 30);
      cp.add(MONAT);

      jahr.setBounds(125, 75, 60, 30);
      cp.add(jahr);
      JAHR.setBounds(125, 50, 30, 30);
      cp.add(JAHR);

      stunde.setBounds(35, 25, 30, 30);
      cp.add(stunde);
      STUNDE.setBounds(35, 0, 50, 30);
      cp.add(STUNDE);

      minute.setBounds(80, 25, 30, 30);
      cp.add(minute);
      MINUTE.setBounds(80, 0, 50, 30);
      cp.add(MINUTE);

      sekunde.setBounds(125, 25, 30, 30);
      cp.add(sekunde);
      SEKUNDE.setBounds(125, 0, 50, 30);
      cp.add(SEKUNDE);

      zeit.setBounds(35, 120, 150, 25);
      zeit.setText("Countdown starten");
      cp.add(zeit);
      zeit.addActionListener(new ActionListener() {
        private Thread thread;

        public void actionPerformed(ActionEvent evt) {

           int zeit[]=new int [6];
           zeit[0]=Integer.parseInt(tag.getText());
           zeit[1]=Integer.parseInt(monat.getText());
           zeit[2]=Integer.parseInt(jahr.getText());
           zeit[3]=Integer.parseInt(stunde.getText());
           zeit[4]=Integer.parseInt(minute.getText());
           zeit[5]=Integer.parseInt(sekunde.getText());
           count = new Counter(zeit);
           //das alte fenster abschießen
           dispose();

           //die neue oberfläche erzeugen
            ober = new Oberflaeche(zeit);
            thread = new Thread(new Runnable(){
              private int[] bis_dato;

              public void run()
               {
                   // ENDLOSSCHLEIFE
                    while(true){
                      bis_dato = count.wielangenoch();
                      System.out.println("mhm");
                      SwingUtilities.invokeLater(new Runnable(){

                        public void run()
                        {
                          ober.akutalisieren(bis_dato);
                        }

                      });


                       try
                       {
                         Thread.sleep(1000);
                       }
                       catch (InterruptedException e)
                       {
                         // TODO Auto-generated catch block
                         e.printStackTrace();
                       }
                    }
               }

              });
             thread.start();
        }

      });
   }



   public static void main(String[] args) {
      ZielDatum ziel= new ZielDatum();
   }
}

Code:
import com.sun.java.swing.SwingUtilities2;

import javax.swing.*;

import java.awt.*;
import java.awt.event.*;
import java.io.*;

public class Oberflaeche extends JFrame{

   private int zeit[] = new int[6];

   private JLabel tag=new JLabel();
   private JLabel monat=new JLabel();
   private JLabel jahr=new JLabel();
   private JLabel stunde=new JLabel();
   private JLabel minute=new JLabel();
   private JLabel sekunde=new JLabel();

   private final JLabel TAG =new JLabel("Tage");
   private final JLabel MONAT =new JLabel("Monate");
   private final JLabel JAHR=new JLabel("Jahre");
   private final JLabel STUNDE=new JLabel("Stunden");
   private final JLabel MINUTE=new JLabel("Minuten");
   private final JLabel SEKUNDEN=new JLabel("Sekunden");

  private Thread thread;

  private Counter count;


   public Oberflaeche(int[] zeit) {
     super("Counter by annica");

     this.zeit=zeit;

      // schliessen-Funktion hinzufuegen
      setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
      // Fenster Groesse setzen
      setSize(230, 150);
      // Fensterplatz setzen
      setLocation(400, 300);

      kreieren();

      // Fenster sichtbar machen
      setVisible(true);
   }

   public void kreieren() {
      Container cp = getContentPane();
      cp.setLayout(null);

      STUNDE.setBounds(5, 5, 286, 30);
      cp.add(STUNDE);
      stunde.setBounds(5, 25, 286, 30);
      cp.add(stunde);

      MINUTE.setBounds(60, 5, 286, 30);
      cp.add(MINUTE);
      minute.setBounds(60, 25, 286, 30);
      cp.add(minute);

      SEKUNDEN.setBounds(110, 5, 286, 30);
      cp.add(SEKUNDEN);
      sekunde.setBounds(110, 25, 286, 30);
      cp.add(sekunde);

      TAG.setBounds(5, 55, 200, 25);
      cp.add(TAG);
      tag.setBounds(5, 75, 200, 25);
      cp.add(tag);


      MONAT.setBounds(40, 55, 200, 25);
      cp.add(MONAT);
      monat.setBounds(40, 75, 200, 25);
      cp.add(monat);

      JAHR.setBounds(90, 55, 200, 25);
      cp.add(JAHR);
      jahr.setBounds(90, 75, 200, 25);
      cp.add(jahr);

      JAHR.setFont( new Font("Georgia", Font.BOLD, 15) );
      JAHR.setForeground(Color.magenta);
   }

   public void akutalisieren(int[] bis_dato)
   {
     tag.setText(""+bis_dato[0]);
     System.out.println(bis_dato[0]);
     monat.setText(""+bis_dato[1]);
     jahr.setText(""+bis_dato[2]);
     stunde.setText(""+bis_dato[3]);
     minute.setText(""+bis_dato[4]);
     sekunde.setText(""+bis_dato[5]);
     repaint();
     validate();
   }


}
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
T Swing 2 Thread.sleep parallel laufen lassen AWT, Swing, JavaFX & SWT 4
I (JPanel) paintComponent mit Zeitverschiebung (Sleep/Wait) AWT, Swing, JavaFX & SWT 1
L JavaFX Wait/Sleep/postedDelay - Einfach nur warten AWT, Swing, JavaFX & SWT 4
P Problem Thread.sleep() und JProgressBar AWT, Swing, JavaFX & SWT 7
A Thread und sleep(1000); AWT, Swing, JavaFX & SWT 7
S Timer oder Thread.sleep AWT, Swing, JavaFX & SWT 3
J Events und Sleep? AWT, Swing, JavaFX & SWT 4
K Thread.sleep in GUI AWT, Swing, JavaFX & SWT 4
J Swing Swing und Sleep... AWT, Swing, JavaFX & SWT 2
S Thread.sleep() in einer methode fürs zeichen AWT, Swing, JavaFX & SWT 3
X Problem bei JTextArea und Thread.sleep() AWT, Swing, JavaFX & SWT 8
B Swing Swing und Thread.sleep() AWT, Swing, JavaFX & SWT 6
T thread.sleep Sprung Problem AWT, Swing, JavaFX & SWT 24
S Problem mit 2 Thread.sleep AWT, Swing, JavaFX & SWT 3
M JTextArea in JScrollPane, Problem mit Thread.sleep() AWT, Swing, JavaFX & SWT 5
S Thread.sleep() beim Zeichnen auf Swing Komponenten? AWT, Swing, JavaFX & SWT 6
Y GBO friet bei Thread.sleep ein AWT, Swing, JavaFX & SWT 3
Juelin JavaFX Netbeans Aufruf Funktion aus Scenebuilder AWT, Swing, JavaFX & SWT 8
G JButton mit importFiles-Funktion auf JDrawPane AWT, Swing, JavaFX & SWT 5
L JavaFx Textformatierung mittels Datenbank und Funktion anpassen AWT, Swing, JavaFX & SWT 5
T Combobox mit Autocomplete-Funktion AWT, Swing, JavaFX & SWT 7
C Swing Aufruf der Funktion (die ein Dialog anzeigt) über Symbol anzeigen lassen AWT, Swing, JavaFX & SWT 4
L Button Funktion zuweisen in WindowBuilder AWT, Swing, JavaFX & SWT 22
A Button mit Speicher-Funktion AWT, Swing, JavaFX & SWT 8
F main-Funktion bei Swing AWT, Swing, JavaFX & SWT 4
kilopack15 Buttons ohne Funktion AWT, Swing, JavaFX & SWT 2
J Event Handling Frage zu der Funktion addActionListener AWT, Swing, JavaFX & SWT 2
D SWT Button mit F5-Funktion AWT, Swing, JavaFX & SWT 1
E ActionListener führt falsche Funktion aus AWT, Swing, JavaFX & SWT 6
C Swing JTextField Funktion zuweisen - Löschen von Buchstaben/Sonderzeichen AWT, Swing, JavaFX & SWT 6
K Funktion für das Bewegen des Balles AWT, Swing, JavaFX & SWT 5
A Trennung GUI und Funktion AWT, Swing, JavaFX & SWT 5
A Textfeld.append/.setText ohne Funktion AWT, Swing, JavaFX & SWT 2
F Swing JTextField in JList (Funktion beibehalten) AWT, Swing, JavaFX & SWT 2
U Disable-Funktion AWT, Swing, JavaFX & SWT 1
C Swing Durch Inhaltsänderung eines JTextfields eine Funktion aufrufen AWT, Swing, JavaFX & SWT 5
J Swing Nach SwingWorker Funktion aus der GUI Klasse aufrufen AWT, Swing, JavaFX & SWT 5
W Funktion aus einer Java Datei in eine andere einbauen AWT, Swing, JavaFX & SWT 25
W Funktion per Tastendruck aufrufen. AWT, Swing, JavaFX & SWT 10
T ableitung übermalt die funktion AWT, Swing, JavaFX & SWT 3
N Swing Funktion repaint() updated nicht AWT, Swing, JavaFX & SWT 5
lumo SWT Image funktion auf ImageDaten AWT, Swing, JavaFX & SWT 9
R mathematische Funktion x^2 AWT, Swing, JavaFX & SWT 6
R mathemathische Funktion x^2 AWT, Swing, JavaFX & SWT 2
J Progressbar mit einfacher Funktion AWT, Swing, JavaFX & SWT 6
L Swing Funktion animieren AWT, Swing, JavaFX & SWT 10
O Variablen an anonyme Funktion AWT, Swing, JavaFX & SWT 10
D Funktion JList.getSelectedValues() gibt nicht alle values zurück AWT, Swing, JavaFX & SWT 2
G Swing Update-Funktion für Swing-Anwendung AWT, Swing, JavaFX & SWT 5
J Swing JDialog mit static-Funktion anzeigen -> Rückgabewert AWT, Swing, JavaFX & SWT 3
I JTextArea mit Copy Paste Funktion AWT, Swing, JavaFX & SWT 7
H Funktion ausführen wenn Button gedrückt wird. AWT, Swing, JavaFX & SWT 2
B Restart-Funktion für einen Updatemechanismus?????? AWT, Swing, JavaFX & SWT 4
G F6 Funktion AWT, Swing, JavaFX & SWT 2
S Swing Button mit Funktion abbilden AWT, Swing, JavaFX & SWT 3
P Funktion ist nicht MAC kompatibel, warum? AWT, Swing, JavaFX & SWT 12
S Funktion nur ausführen, wenn Maus über Componente ist AWT, Swing, JavaFX & SWT 2
GilbertGrape bei "Enter" Funktion ausführen, egal wo der Fokus AWT, Swing, JavaFX & SWT 2
F Jframe Exit Funktion überladen AWT, Swing, JavaFX & SWT 3
G kreis malen -> welche funktion? AWT, Swing, JavaFX & SWT 3
D SWT: Funktion zum Auslesen der Schriftgröße AWT, Swing, JavaFX & SWT 2
D GroupLayout an un plötzlich is CardLayout Funktion tot? AWT, Swing, JavaFX & SWT 10
R Editor mit "Gehe zu"-Funktion AWT, Swing, JavaFX & SWT 4
W Unterdrückung von FrameIcon-Funktion im JInternalFrame AWT, Swing, JavaFX & SWT 5
G Funktion für PopUp Menü AWT, Swing, JavaFX & SWT 32
F ZOOM Funktion in JTextPane AWT, Swing, JavaFX & SWT 6
D paint-Funktion wird nicht ausgeführt AWT, Swing, JavaFX & SWT 6
A Drag and Drop Funktion mit JLabel AWT, Swing, JavaFX & SWT 5
E Beim Schließen des Fensters eigene Funktion aufrufen AWT, Swing, JavaFX & SWT 8
L JOP.showInputDialog: Abbrechen Button-Funktion beenden AWT, Swing, JavaFX & SWT 5
D setPreferredSize(), setMaximumSize() ohne Funktion? AWT, Swing, JavaFX & SWT 4
S JComboBox -> undo Funktion hinzufügen! AWT, Swing, JavaFX & SWT 2
Z Welche Funktion von JTextArea muß ich überschreiben? AWT, Swing, JavaFX & SWT 4
R TAB-Funktion in Fenster ändern - genauer: STRG+TAB AWT, Swing, JavaFX & SWT 5
P Rückgängig-Funktion im Malprogramm AWT, Swing, JavaFX & SWT 3
P thread nimmt veränderte boolean nicht AWT, Swing, JavaFX & SWT 7
N JFrame loescht alles, sobald der Thread zuende ist AWT, Swing, JavaFX & SWT 22
M Server/Client thread von GUI Trennen AWT, Swing, JavaFX & SWT 2
K JavaFx, Sound Aufnahme und Thread AWT, Swing, JavaFX & SWT 0
T Exception in thread "main" java.lang.NoClassDefFoundError AWT, Swing, JavaFX & SWT 4
G Exception javafx Thread -> caused by removing children while in EventHandler AWT, Swing, JavaFX & SWT 28
H Event Handling Thread - Abruf der get-Methode AWT, Swing, JavaFX & SWT 5
J "Exception in thread "AWT-EventQueue-0"" Fehler AWT, Swing, JavaFX & SWT 3
G Thread starten Swing AWT, Swing, JavaFX & SWT 5
C Thread verwalten AWT, Swing, JavaFX & SWT 2
A Swing Exception in thread "AWT-EventQueue-0" AWT, Swing, JavaFX & SWT 1
S JavaFX Exception in thread "JavaFX Application Thread" AWT, Swing, JavaFX & SWT 3
L Label im JavaFX Thread Updaten AWT, Swing, JavaFX & SWT 3
ralfb1105 JavaFX Alert Confirmation Dialog aus einem Service Thread AWT, Swing, JavaFX & SWT 8
ralfb1105 JavaFX MVC: Thread in Model Class mit Ausgabe in TextArea AWT, Swing, JavaFX & SWT 10
D Swing SwingUtils / Thread Problem AWT, Swing, JavaFX & SWT 3
J Thread per Button starten AWT, Swing, JavaFX & SWT 10
J Thread kennt JButton nicht. AWT, Swing, JavaFX & SWT 11
T JavaFX Task / Thread / FXThread Komplikationen AWT, Swing, JavaFX & SWT 5
O Swing Event Dispatch Thread AWT, Swing, JavaFX & SWT 1
L JavaFX UI Thread block AWT, Swing, JavaFX & SWT 13
X Exception in thread "AWT-EventQueue-0" java.lang.ArrayIndexOutOfBoundsException: -1 AWT, Swing, JavaFX & SWT 6
sandaime Swing Thread für CMD auslesen AWT, Swing, JavaFX & SWT 16
E JavaFX JavaFX Application in Thread ausführen AWT, Swing, JavaFX & SWT 1
D JavaFX UI-Thread und DB-Thread trennen um z.B. Ladebalken anzuzeigen AWT, Swing, JavaFX & SWT 15

Ähnliche Java Themen

Neue Themen


Oben