package elte.java2_utikalauz5.swing; /** Képernyőn mászkáló kukacszerű egyszerű animáció megvalósítása swingben.
Az offscreen rajzolás megvalósítása a {@code setDoubleBuffered} metódus felhasználásával történik. @link.forrásfájl {@docRoot}/../data/swing/src PaintTeszt.java @link.letöltés {@docRoot}/../data/swing PaintTeszt.jar @see elte.java2_utikalauz5.gui.PaintTeszt @since Java 2 Útikalauz programozóknak 5.0 */ public class PaintTeszt extends SwingTeszt { /** Verziószám */ private final static long serialVersionUID = 15L; /** Kukacanimátor */ private elte.java2_utikalauz5.gui.PaintTeszt teszt; /** Megjelenítésre felhasznált grafikus felület */ private javax.swing.JPanel panel; /** Applet indítása */ @Override public void start() { teszt.start(); //kukacmozgatás indítása } /** Applet megállítása */ @Override public void stop() { teszt.stop(); //kukacmozgatás megállítása } /** Applet megszüntetése */ @Override public void destroy() { if (teszt!=null) teszt.stop(); //kukacmozgatás megszüntetése teszt = null; } /** Indítása alkalmazásként. @param argumentumok Az indításkor megadott paraméterek. */ public static void main(String argumentumok[]) { new PaintTeszt().init(argumentumok); } /** Applet leírása. @return A példaprogram leírása */ @Override public String getAppletInfo() { return "Swing megjelenítési tesztprogram"; } /** Képpuferes megjelenítés paraméterneve */ private static final String OFFSCREEN = "offscreen"; /** Applet indítási paramétereinek leírása. @return Az appletparaméterek leírása */ @Override public String[][] getParameterInfo() { return new String[][] {{OFFSCREEN, "bármi", "megjelenítés pufferelt kérése"}}; } /** GUI felépítése */ @Override protected void felépít() { panel = new javax.swing.JPanel() { /** Verziószám. */ private final static long serialVersionUID = 15L; /** Komponens megjelenítése. @param g Megjelenítéshez használandó grafikus környezet */ @Override protected void paintComponent( java.awt.Graphics g ) { long idő = System.nanoTime(); //időmérés g.setColor(getBackground()); java.awt.Rectangle vágás = g.getClipBounds(); //törlés g.fillRect(vágás.x, vágás.y, vágás.width, vágás.height); g.setColor(getForeground()); teszt.pontoz("paint",true,false,g);//érintett pontok kirajzolása System.out.println("\tidőtart:"+(System.nanoTime()-idő)+" ns."); } }; boolean offscreen = getRootPane().getClientProperty(OFFSCREEN)!=null; panel.setPreferredSize(new java.awt.Dimension(400, 300)); setContentPane(panel); panel.setOpaque(true); panel.setDoubleBuffered( offscreen ); teszt = new elte.java2_utikalauz5.gui.PaintTeszt(panel); nyomkövetés( panel ); //gombpanel nyomkövetésének engedélyezése } }