www.www.zaachi.com » Blog/Java » Java : Plynulá změna data a času

Jak jednoduše docílit plynulé změny data a času v Javě.
Pro vytvoření aktuálního data má Java přímo implementované metoty v java.util.Date. Vytvoření
proměnné s obsahem aktuálního data je proto velice snadné.
V tomto jednoduchém příkladu si uděláme JFrame okno, ve kterém se bude plynule zobrazovat a přepisovat aktuální čas a datum. Čas se bude zobrazovat ve dvou variantách. Poprvé v titulku okna a podruhé v JPanelu umístěném v okně.
V titulku okna se bude zobrazovat pouze aktuální čas, v JPanelu se bude kromě času zobrazovat i aktuální datum.
Pro získání těchto dvou hodnot si vytvoříme dvě proměnné typu SimpleDateFormat, pro které později implementujeme pomocí metody format() Date:
SimpleDateFormat dateformat = new SimpleDateFormat("HH:mm:ss");
SimpleDateFormat dates = new SimpleDateFormat("dd.M.yyyy HH:mm:ss");
První SimpleDateFormat použijeme pro získáni informací pouze o čase ve formátu:
Hodina:minuta:sekudna
Druhý SimpleDateFormat obsahuje navíc ještě datum:
den.měsíc.rok Hodina:minuta:sekunda
Pro použití si musíme vytvořit novou proměnnou typu Date, ze které pomocí vytvořeného formátu získáme požadovanou hodnotu:
Date date = new Date(); dateformat.format(date); dates.format(date);
Nakonec kód celého příkladu:
import java.awt.BorderLayout;
import java.text.SimpleDateFormat;
import java.util.Date;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
//trida implementuje Runnable
public class datetime extends JFrame implements Runnable {
//private JLabel, ve kterem se bude zobrazovat cas
private JLabel now = new JLabel("...", JLabel.CENTER);
//konstruktor
public datetime() {
//nastaveni titulku okna (titulek se prekresli aktualnim casem)
setTitle("Timer");
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
//nastaveni rozmeru
setSize(200, 100);
//vytvoreni noveho panelu
JPanel contentPane = (JPanel) getContentPane();
contentPane.add(now, BorderLayout.CENTER);
setVisible(true);
//spusteni noveho Threadu
Thread th = new Thread(this);
th.start();
}
//implementovana trida run
public void run() {
//nekonecny cyklus pro neustalou aktualizaci casu
while( true ){
//vytvoreni masky pro cas
//zobrazuje se v titulku okna
SimpleDateFormat dateformat = new SimpleDateFormat("HH:mm:ss");
//vytvoreni masky pro datum a cas
//zobrazuje se v panelu
SimpleDateFormat dates = new SimpleDateFormat("dd.M.yyyy HH:mm:ss");
//new Date
Date date = new Date();
//v JLabelu zmenime datum a cas
now.setText(dates.format(date));
//v titulku okna menime cas
this.setTitle(dateformat.format(date));
try {
//cekame sekundu
Thread.sleep(1000);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
}

Autor: Zaachi
Publikováno: 12.4.2008 20:30:22
JavaScript: plynulá změna velikosti obrázku
PHP: slovní vyjádření data
Vývoj aplikací pro iPhone: Send data to a Web server
Java a základy GUI