package elte.java2_utikalauz5.swing; /** Időzítők használata Swingben.

A felhasználói felület csak egy, az aktuális időt megjelenítő címkéből áll. Az idő léptetését, valamint a megjelenítő címke pozíciójának véletlenszerű változtatását két különálló időzítő segítségével ütemezzük, így a címke a rendelkezésre álló felhasználói felület véletlenszerű pontján fogja az időt megjeleníteni. Az időt kijelző címke megjelenítése nyomkövethető. @link.forrásfájl {@docRoot}/../data/swing/src TimerTeszt.java @link.letöltés {@docRoot}/../data/swing TimerTeszt.jar @since Java 2 Útikalauz programozóknak */ public class TimerTeszt extends SwingTeszt { /** Verziószám */ private final static long serialVersionUID = 15L; /** Indítás alkalmazásként. @param argumentumok Az indításkor megadott paraméterek. */ public static void main(String argumentumok[]) { new TimerTeszt().init(argumentumok); } /** Applet leírása. @return A példaprogram leírása */ @Override public String getAppletInfo() { return "Időzítő használatát bemutató tesztprogram"; } /** Időpont formázása */ private java.text.DateFormat formázó = java.text.DateFormat.getDateTimeInstance(); /** Aktuális időpont */ private java.util.Date időpont = new java.util.Date(); /** Időt megjelenítő címke */ private javax.swing.JLabel idő; /** Aktuális megjelenítési hely */ private java.awt.Rectangle téglalap = new java.awt.Rectangle(); /** GUI felépítése */ @Override protected void felépít() { idő = new javax.swing.JLabel(formázó.format(időpont)); getContentPane().setLayout(null); //abszolút pozícionálás használata add(idő); nyomkövetés(idő); //lehet nyomkövetni a megjelenítését getContentPane().setPreferredSize(new java.awt.Dimension(300, 200)); new javax.swing.Timer(1000, this).start(); //idő léptetése new javax.swing.Timer(1000, new java.awt.event.ActionListener() { /** Címke mozgatása. @param ae Időzítési esemény */ public void actionPerformed(java.awt.event.ActionEvent ae) { idő.getBounds(téglalap); //címke pozíciójának beállítása téglalap.x = (int)(Math.random()* (getContentPane().getWidth() - téglalap.width)); téglalap.y = (int)(Math.random()* (getContentPane().getHeight() - téglalap.height)); idő.setBounds(téglalap); javax.swing.Timer időzítő = (javax.swing.Timer)ae.getSource(); időzítő.setDelay(3000+(int)(Math.random()*5000)); //újraütemezés } }).start(); } /** Idő megjelenítése. @param ae Időzítési esemény */ public void actionPerformed(java.awt.event.ActionEvent ae) { időpont.setTime(System.currentTimeMillis()); //aktuális idő formázása idő.setText(formázó.format(időpont)); idő.getBounds(téglalap); //címke méretének beállítása java.awt.Dimension méret = idő.getPreferredSize(); téglalap.width = méret.width; téglalap.height = méret.height; idő.setBounds(téglalap); } }