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

Java : Plynulá změna data a času



Jak jednoduše docílit plynulé změny data a času v Javě.

 

Reklama

Pokud mě chcete podpořit a jste milovník jedné stopy, navštivte můj projekt: MotoArena.cz

Pro vytvoření aktuálního data má Java přímo implementované metoty v java.util.Date. Vytvoření simpledateformat.png 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();
			}
		}
	}
}

 

 


linkuj topclanky
Komentáře (4)

Autor: Zaachi
Publikováno: 12.4.2008 20:30:22


Mohlo by vás zajímat:
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
TOPLIST.cz
rss coments img img img