Clocking Time ?

Code46

Erfahrenes Mitglied
Hi Leute,

Habe Zeit und Datum in einem JPanel hinzugefuegt jedoch will ich das man die sekunden ticken sieht. Also ne richtige UHR.

Wenn ihr mir weiterhelfen koentet wuerde ich mich sehr freuen.

Danke
 

Fabio Hellmann

Erfahrenes Mitglied
Hi,
was genau willst du denn für eine Uhr? Eine mit Zeigern oder eine mit Ziffern? Oder geht auch das Datum (evtl. formatiert) aus dem Date-Objekt?

Gruß

Fabio
 

Code46

Erfahrenes Mitglied
Habe dies hier genommen

Code:
DateFormat dateFormat = new SimpleDateFormat("yyyy/MM/dd HH:mm:ss");
            Date date = new Date();
            String addDate =dateFormat.format(date);

und dann in:

Code:
JPanel north = new JPanel()
           add("North",north);
           north.add(new JLabel(addDate)); // Dies will ich fontsize 18 und Tickent haben ?
 
Zuletzt bearbeitet:

Fabio Hellmann

Erfahrenes Mitglied
Ah ok, also sowas. Oder?
Java:
import java.awt.Font;
import java.text.DateFormat;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.Timer;
import java.util.TimerTask;

import javax.swing.JFrame;
import javax.swing.JLabel;

public class JSimpleClock extends JLabel
{
	private final DateFormat formatter = new SimpleDateFormat("yyyy/MM/dd HH:mm:ss");
	
	public JSimpleClock() {
		setHorizontalAlignment(CENTER);
		setFont(new Font("Arial", Font.PLAIN, 18));
		new Timer().scheduleAtFixedRate(new TimerTask()
		{
			@Override
			public void run() {
				setText(formatter.format(new Date()));
			}
		}, 0, 100);
	}
	
	public static void main(final String[] args) {
		final JFrame f = new JFrame("JClock - Demo");
		f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		f.setSize(200, 50);
		f.add(new JSimpleClock());
		f.setResizable(false);
		f.setUndecorated(true);
		f.setLocationRelativeTo(null);
		f.setVisible(true);
	}
}
 

Code46

Erfahrenes Mitglied
Bin bischen verwirrt jetzt hier mein code:

Code:
public class Project extends JFrame implements ActionListener {

    DateFormat dateFormat = new SimpleDateFormat("yyyy/MM/dd HH:mm:ss");
    Date date = new Date();
    String addDate =dateFormat.format(date);
    JButton btnOk = new JButton("Run");
    JButton btnSearch = new JButton("Search");
    JComboBox jcbSelect = new JComboBox();
    JTextField jtfName = new JTextField(10);
    TextArea information = new TextArea(20,80);
    LibraryData db = new LibraryData();
    JLabel datetime = new JLabel(addDate);
   

 public Project(){
        JPanel north = new JPanel();
        JPanel south = new JPanel();
        JPanel east = new JPanel();
        JPanel west = new JPanel();
        JPanel center = new JPanel();
        
        add("North",north);
        add("South",south);
        add("East",east);
        add("West",west);
        add("Center",center);


         north.setBorder(BorderFactory.createTitledBorder("Output"));
         BoxLayout layou = new BoxLayout(north, BoxLayout.X_AXIS);
         north.add(datetime); // Hier habe ich es Hinzugefuegt dies soll Fontsize 18 sein und ticken

          btnOk.addActionListener(this);
          btnSearch.addActionListener(this);


        south.setBorder(BorderFactory.createTitledBorder("Output"));
        south.add(btnOk);
        BoxLayout la = new BoxLayout(south, BoxLayout.X_AXIS);
        
        center.add(information);

       }

    public void actionPerformed(ActionEvent sc) {
 

Fabio Hellmann

Erfahrenes Mitglied
Das einzigste was dir fehlt, ist ein Timer/Thread, der deine Uhr aktuallisiert. Da du das Datum momentan nur einmal - beim initialisieren der Variable - setzt.
Java:
    DateFormat dateFormat = new SimpleDateFormat("yyyy/MM/dd HH:mm:ss");
    Date date = new Date();
    String addDate =dateFormat.format(date);
    ....
    JLabel datetime = new JLabel(addDate);
Dadurch hast du eine statische Zeit.

ps.: Bitte verwende die Java-Code-Tags für die Syntaxhighlights. Danke :)
 

Code46

Erfahrenes Mitglied
Habe jetzt dies hinzugefuegt aber er mag dieses setText nicht :
Code:
public class Project extends JFrame implements ActionListener {

 	DateFormat dateFormat = new SimpleDateFormat("yyyy/MM/dd HH:mm:ss");
 	Date date = new Date();
 	String addDate =dateFormat.format(date);
    JButton btnOk = new JButton("Run");
    JButton btnSearch = new JButton("Search");
    JComboBox jcbSelect = new JComboBox();
    JTextField jtfName = new JTextField(10);
    TextArea information = new TextArea(20,80);
    LibraryData db = new LibraryData();
    JLabel datetime = new JLabel(addDate);
    Timer timer = new Timer();

public void timer() {    
    timer.scheduleAtFixedRate(new TimerTask(){
        @Override
        public void run() {
            setText(dateFormat.format(new Date())); // Er gibt mir ein Fehler fuer setText er will das ich zu setTitle aender. es funk. trotzdem nicht
        }
    }, 0, 100);

}

 public Project(){
        JPanel north = new JPanel();
        JPanel south = new JPanel();
        JPanel east = new JPanel();
        JPanel west = new JPanel();
        JPanel center = new JPanel();
        
        add("North",north);
        add("South",south);
        add("East",east);
        add("West",west);
        add("Center",center);


         north.setBorder(BorderFactory.createTitledBorder("Output"));
         BoxLayout layou = new BoxLayout(north, BoxLayout.X_AXIS);
         north.add(datetime);
 

Fabio Hellmann

Erfahrenes Mitglied
Das liegt daran, weil deine Klasse und JFrame (von dem du ableitest) keine Methode mit dem Namen "setText(String)" kennt. Diese Methode gehört zum JLabel. Deshalb musst du 'datetime.setText(String)' aufrufen. ;)
 

Code46

Erfahrenes Mitglied
Achja stimmt jaaa bin voll ausm haeuschen heute. So alles ok keine fehler muesste eigentlich jetzt laufen wenn ich nichts uebersehen habe ?
Ich lasse es laufen und ..... geht nit.

muss ich dort noch north.validate(); oder north.repaint(); hinzufuegen ?
 
Zuletzt bearbeitet:

Fabio Hellmann

Erfahrenes Mitglied
Hast du die Methode 'timer()' denn aufgerufen? Wenn nein, dann wird es auch nicht neugezeichnet. :)
Normalerweiße sollte sich das JLabel automatisch aktuallisieren, sobald der Text geändert wird.
 

Neue Beiträge