# Uhrzeit in JFrame anzeigen



## Rave (2. Okt 2009)

Hallo,

Ich möchte in meiner App das im JFrame die Uhrzeit angezeigt wird !!! Ich hab zwar ne Lösung doch dazu brauch ich nen Thread und dann ist meine App seeeeeehr langsam !!! :noe:

Jemand ne Idee wie ich das besser oder anders hinbekomme ???


----------



## faetzminator (2. Okt 2009)

Zeig mal den Code vom Thread. Hast du da drin ein [c]Thread.yield()[/c] oder [c]Thread.sleep(...);[/c] gemacht?


----------



## Rave (2. Okt 2009)

Einmal hab ich versucht es so in dem Frame zu bekommen:

```
label = new Label("-----");
frame.add(label);
Thread updateSystemTime = new Thread() {
         public void run() {
            while (true) {
               Calendar calender = Calendar.getInstance();
               label.setText("" + calender.get(Calendar.HOUR)
                     + ":" + calender.get(Calendar.MINUTE) + ":"
                     + calender.get(Calendar.SECOND));
            }
         }
      };
updateSystemTime.start();
```

Und einmal in einem eigenem Frame:

```
import java.awt.BorderLayout;
import java.awt.Label;
import java.util.Calendar;

import javax.swing.JFrame;

public class Clock extends JFrame {


  // Anfang Attribute
   private Label label;
  // Ende Attribute


   public Clock() {
      super("Clock");
      setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
      label = new Label("-----");
      add(label);
      Thread updateSystemTime = new Thread() {
         public void run() {
            while (true) {
               Calendar calender = Calendar.getInstance();
               label.setText("" + calender.get(Calendar.HOUR)
                     + ":" + calender.get(Calendar.MINUTE) + ":"
                     + calender.get(Calendar.SECOND));
            }
         }
      };
      updateSystemTime.start();
      pack();
      setSize(50, 80);
      setVisible(true);

    // Anfang Komponenten
    // Ende Komponenten
   }

  // Anfang Methoden

   public static void main(String[] args) {
       Clock clock = new Clock();
   }
  // Ende Methoden
}
```


----------



## Verjigorm (2. Okt 2009)

überleg mal wieoft "while (true) " in welcher Zeit wiederholt wird und was Calendar.getInstance() bedeutet und wieoft man das aufrufen möchte/sollte


----------



## Rave (2. Okt 2009)

Verjigorm hat gesagt.:


> überleg mal wieoft "while (true) " in welcher Zeit wiederholt wird und was Calendar.getInstance() bedeutet und wieoft man das aufrufen möchte/sollte



Hmm...true is das dann ja eigentlich immer also wiederholt der das ja eigentlich so oft und so schnell wie der PC kann oder ??? 
Kann ich das irgenwie unterdrücken ??? Weil eigentlich muss der das ja nur 1x pro Sekunde machen oder ???


----------



## MiDniGG (2. Okt 2009)

Diese Frage hat der faetzminator schon beantwortet


----------



## Verjigorm (2. Okt 2009)

Achtung: Timer ist hier javax.swing.Timer!


```
new Timer(1000, new ActionListener() 
      {
    	 Calendar calender = Calendar.getInstance();
		@Override
		public void actionPerformed(ActionEvent e) {
        	calender = Calendar.getInstance();
          label.setText("" + calender.get(Calendar.HOUR)
                + ":" + calender.get(Calendar.MINUTE) + ":"
                + calender.get(Calendar.SECOND));
		}
	}).start();
```

edit: mit dem Calendar gehts auch schöner, z.B. per SimpleDateformat


----------



## Rave (2. Okt 2009)

Verjigorm hat gesagt.:


> Achtung: Timer ist hier javax.swing.Timer!
> 
> 
> ```
> ...



Ist das jetzt für das was einen eigenen Frame hat oder das welches ich in meinem Frame einfügen kann ??? (Sry bin noch sehr am Anfang :rtfm


----------



## Verjigorm (2. Okt 2009)

deinen Thread "updateSystemTime" einfach durch das ersetzen


----------



## Rave (2. Okt 2009)

Verjigorm hat gesagt.:


> deinen Thread "updateSystemTime" einfach durch das ersetzen



Dann kommt:
Clock.java:21:27: cannot find symbol
symbol  : class ActionListener
location: class Clock
      new Timer(1000, new ActionListener()
                          ^
1 error

Ich schick euch mal den Code von meinem Frame in dem ich das eigentlich drinne haben will ^^


```
import java.awt.*;
import java.awt.event.*;
import java.awt.Label;
import javax.swing.*;
import javax.swing.event.*;
import javax.media.*;
import java.util.Calendar;

public class MediaCenter extends JFrame implements KeyListener, MouseListener{
  // Anfang Attribute
  // Variablen für die Doppelpufferung
  private Image dbImage;
  private Graphics dbg;
  private Label label;
  public int startvar=0;
  soundLib slib;
  Schhließen close;
  // Wallpaper
  Image img=getToolkit().getImage("pics/MediaWelcomeScreenVersion.jpg");
  Image img1=getToolkit().getImage("pics/MediaBackground.jpg");
  Image img2=getToolkit().getImage("pics/MediaButtonsWeiß1.gif");
  Image img14=getToolkit().getImage("pics/MultimediaCenter.gif");
  // Buttons im Hauptmenue des Media Centers
  Image img3=getToolkit().getImage("pics/buttonMusicBlau1.jpg");
  Image img4=getToolkit().getImage("pics/buttonFotosBlau1.jpg");
  Image img5=getToolkit().getImage("pics/buttonVideosBlau1.jpg");
  Image img6=getToolkit().getImage("pics/buttonGamesBlau1.jpg");
  Image img16=getToolkit().getImage("pics/buttonGamesBlauPushed1.jpg");
  Image img7=getToolkit().getImage("pics/buttonExitWeiß1.jpg");
  Image img8=getToolkit().getImage("pics/buttonOptionsWeiß1.jpg");
  Image img9=getToolkit().getImage("pics/buttonKleinBlau1.jpg");
  Image img15=getToolkit().getImage("pics/buttonZusatzToolsKleinBlau1.jpg");
  Image img13=getToolkit().getImage("pics/buttonZurückKleinBlau1.jpg");
  // Überschriften
  Image img10=getToolkit().getImage("pics/Musik.gif");
  Image img11=getToolkit().getImage("pics/Fotos.gif");
  Image img12=getToolkit().getImage("pics/Videos.gif");
  // Ende Attribute

  public MediaCenter(String title) {
    // Frame-Initialisierung
    super(title);
    setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
    int frameWidth = 1280;
    int frameHeight = 800;
    setSize(frameWidth, frameHeight);
    Dimension d = Toolkit.getDefaultToolkit().getScreenSize();
    int x = (d.width - getSize().width) / 2;
    int y = (d.height - getSize().height) / 2;
    setLocation(x, y);
    Container cp = getContentPane();
    cp.setLayout(null);
    // Anfang Komponenten
    // Ende Komponenten
    close=new Schhließen();
    slib=new soundLib();

    setResizable(false);
    setVisible(true);
    addKeyListener(this);
    addMouseListener(this);
  }
  // Anfang Methoden
  public void update (Graphics g)
  {
    paint(g);
  }
  public void musik()
  {
         slib.loadMp3("sounds/limp_bizkit_boiler.mp3");
         slib.playMp3("sounds/limp_bizkit_boiler.mp3");
  }
  public void musik1()
  {
         slib.loadMp3("sounds/01-the_prodigy-colours.mp3");
         slib.playMp3("sounds/01-the_prodigy-colours.mp3");
  }
  public void musik2()
  {
         slib.loadMp3("sounds/08-the_prodigy-take_me_to_the_hospital.mp3");
         slib.playMp3("sounds/08-the_prodigy-take_me_to_the_hospital.mp3");
  }
  public void musikStop()
  {
         slib.stopMp3("sounds/limp_bizkit_boiler.mp3");
  }
  public void paint(Graphics g)
  {
         if (startvar==0) {
            g.drawImage(img,0,0,this);
            setTitle("Welcome");
         }
         // Hauptmenue
         if (startvar==1) {
            setTitle("Media Center 0.00.0.1");
            g.drawImage(img1,0,0,this);
            g.drawImage(img15,50,195,this);
            g.drawImage(img3,550,200,this);
            g.drawImage(img4,550,250,this);
            g.drawImage(img5,550,300,this);
            g.drawImage(img6,550,450,this);
            g.drawImage(img7,50,700,this);
            g.drawImage(img8,1075,700,this);
            g.drawImage(img2,560,700,this);
            g.drawImage(img14,300,50,this);
         }
         // Musik
         if (startvar==2) {
            setTitle("Musik");
            g.drawImage(img1,0,0,this);
            g.drawImage(img10,400,40,this);
            g.setColor(Color.blue);
            g.drawString("Limp Bizkit - Boiler",500,175);
            g.drawString("The Prodigy - Colours",500,190);
            g.drawString("The Prodigy - Tale me to the Hospital",500,205);
            g.drawImage(img13,525,700,this);
         }
         // Fotos
         if (startvar==3) {
            setTitle("Fotos");
            g.drawImage(img1,0,0,this);
            g.drawImage(img11,400,40,this);
            g.drawImage(img13,525,700,this);
         }
         // Videos
         if (startvar==4) {
            setTitle("Videos");
            g.drawImage(img1,0,0,this);
            g.drawImage(img12,400,40,this);
            g.drawImage(img13,525,700,this);
         }
         // Games
         if (startvar==6) {
            setTitle("Media Center 0.00.0.1");
            g.drawImage(img1,0,0,this);
            g.drawImage(img15,50,195,this);
            g.drawImage(img3,550,200,this);
            g.drawImage(img4,550,250,this);
            g.drawImage(img5,550,300,this);
            g.drawImage(img16,550,450,this);
            g.drawImage(img7,50,700,this);
            g.drawImage(img8,1075,700,this);
            g.drawImage(img2,560,700,this);
            g.drawImage(img9,475,500,this);
            g.drawImage(img9,675,500,this);
            g.drawString("Space Taxi",525,525);
            g.drawString("Minesweeper",725,525);
            g.drawImage(img14,300,50,this);

         }
         // Zusatz App's Menue
         if (startvar==7) {
            System.out.println("Hallo 7");
            setTitle("Media Center 0.00.0.1");
            g.drawImage(img1,0,0,this);
            g.drawImage(img15,50,195,this);
            g.drawImage(img3,550,200,this);
            g.drawImage(img4,550,250,this);
            g.drawImage(img5,550,300,this);
            g.drawImage(img6,550,450,this);
            g.drawImage(img7,50,700,this);
            g.drawImage(img8,1075,700,this);
            g.drawImage(img2,560,700,this);
            g.drawImage(img14,300,50,this);
            g.drawImage(img9,50,250,this);
            g.setColor(Color.BLACK);
            g.drawString("Taschenrechner",85,273);
            g.drawImage(img9,50,300,this);
            g.drawImage(img9,50,350,this);
            g.drawImage(img13,50,400,this);
         }
         // Options
         if (startvar==5) {
            setTitle("Options");
            g.drawImage(img1,0,0,this);
            g.setColor(Color.white);
            g.drawString("Hinzufügen von Medien:",750,200);
            g.drawString("Fotos in den Ordner Photos einfügen,",750,220);
            g.drawString("danach können sie in der Photo App ",750,240);
            g.drawString("angezeigt werden.",750,260);
            g.drawString("Musik in den Ordner Sounds einfügen,",750,280);
            g.drawString("danach können sie in der Musik App ",750,300);
            g.drawString("angehört werden. ",750,320);
            g.drawImage(img13,525,700,this);
         }
         // Exit
  }
  public void keyPressed(KeyEvent e)
  {
    System.out.println("User pressed key " + e.getKeyCode());
    // Zum Menue zurück
    if(e.getKeyCode()==112) startvar=1; repaint();
//    Zum Options Menu zurück
    if(e.getKeyCode()==113) startvar=5; repaint();
    // Programm Beenden
    if(e.getKeyCode()==27) System.exit(0);
  }

  public void keyReleased(KeyEvent e)
  {
         System.out.println("User released key " + e.getKeyCode());
  }

  public void keyTyped(KeyEvent e)
  {
         System.out.println("User typed key " + e.getKeyCode());
  }
   public void mouseClicked(MouseEvent e)
  {
    int x=e.getX();
    int y=e.getY();
    System.out.println("Maus at "+x+"   "+y);
    // Vom Welcome zum Media Center
    if (x>0 && x<1280 && y<800 && y>0 && startvar==0) {
      startvar=1;
      repaint();
    }
    // Zusatz Tools List
    if (x>50 && x<223 && y<233 && y>195 && startvar==1) {
      startvar=7;
      repaint();
    }
    // Zusatz Tool List Schliessen
    if (x>50 && x<223 && y<437 && y>400 && startvar==7) {
      startvar=1;
      repaint();
    }
    // Options
    if (x>1075 && x<1225 && y<751 && y>700 && startvar==1) {
      startvar=5;
      repaint();
    }
    if (x>550 && x<772 && y<246 && y>200 && startvar==1) {
      startvar=2;
      close.enterMP3Player();
      repaint();
    }
    if (x>551 && x<772 && y<294 && y>246 && startvar==1) {
      startvar=3;
      close.enterPhotoApp();
      repaint();
    }
    if (x>551 && x<772 && y<350 && y>300 && startvar==1) {
      startvar=4;
      repaint();
    }
    if (x>551 && x<772 && y<500 && y>450 && startvar==1) {
      startvar=6;
      repaint();
    }
    if (x>502 && x<601 && y<175 && y>164 && startvar==2) {
      musik();
    }
    if (x>502 && x<601 && y<190 && y>180 && startvar==2) {
      musik1();
    }
    if (x>502 && x<601 && y<205 && y>195 && startvar==2) {
      musik2();
    }
    // Musik Zurück Button
    if (x>524 && x<700 && y<736 && y>700 && startvar==2) {
      startvar=1;
      repaint();
    }
    // Fotos Zurück Button
    if (x>524 && x<700 && y<736 && y>700 && startvar==3) {
      startvar=1;
      repaint();
    }
    // Videos Zurück Button
    if (x>524 && x<700 && y<736 && y>700 && startvar==4) {
      startvar=1;
      repaint();
    }
    // Options Zurück Button
    if (x>524 && x<700 && y<736 && y>700 && startvar==5) {
      startvar=1;
      repaint();
    }
    // Space Taxi Game Button
     if (x>475 && x<650 && y<537 && y>500 && startvar==6) {
      close.enterUfoFrame();
      this.setVisible(false);
    }
    // Minesweeper Button
    if (x>675 && x<850 && y<537 && y>500 && startvar==6) {
      close.enterMinesweeper();
    }
    // Calculator Button
     if (x>50 && x<224 && y<286 && y>250 && startvar==7) {
      close.enterCalculator();
      System.out.println("Calculator");
    }
    // Exit Button
    if (x>49 && x<200 && y<750 && y>700 && startvar==1) {
      System.exit(0);
    }
  }



  public void mouseEntered(MouseEvent e)
  {
    System.out.println("User clicked mouse " + e.getClickCount() + " times!");
  }

  public void mouseExited(MouseEvent e)
  {

  }

  public void mousePressed(MouseEvent e)
  {

  }

  public void mouseReleased(MouseEvent e)
  {

  }

  public void mouseMoved(MouseEvent e)
  {
  }

  public void mouseDragged(MouseEvent e)
  {
  }

  // Ende Methoden

  public static void main(String[] args) {
    new MediaCenter("MediaCenter");
  }
}
```

Sagt nichts der Code ist nich sehr gut ^^ aber ist halt meine Art zu lernen :-D xD 

Da will ich ne Uhr rienbekommen die mir durchgehen an der selben Stelle angezeigt wird !!!


----------



## Verjigorm (2. Okt 2009)

```
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.Timer;
```

Fehlt bei dir (und einiges an Grundwissen  )

edit: Und grausam ist der Code auch noch, da musst du noch eiiges an dir arbeiten :rtfm::toll: aber das kommt noch


----------



## Rave (2. Okt 2009)

Verjigorm hat gesagt.:


> ```
> import java.awt.event.ActionEvent;
> import java.awt.event.ActionListener;
> import javax.swing.Timer;
> ...



okay geht schon mal doch wenn ich das nun von meinem Frame aus starten möchte dann kommt das :
MediaCenter.java:67:12: javax.media.Clock is abstract; cannot be instantiated
    clock= new Clock();
           ^
1 error

Hab das nun deklariert und instanziiert ( hoffe das sind die richtige Begriffe ^^)


----------



## Rave (2. Okt 2009)

Rave hat gesagt.:


> okay geht schon mal doch wenn ich das nun von meinem Frame aus starten möchte dann kommt das :
> MediaCenter.java:67:12: javax.media.Clock is abstract; cannot be instantiated
> clock= new Clock();
> ^
> ...



Okay ist nun gelöst ^^ war leicht failed von mir die waren noch nich im selben ordner :-D

Ehm wie bekomme ich das in dem Vordergrund ???

EDIT : Alles gelöst funktioniert !!!! Danke für eure Hilfe !!!


----------

