package elte.java2_utikalauz5.applet; /** Applet életciklusmetódusait kijelző példaprogram.
@link.forrásfájl {@docRoot}/../data/applet/src EletciklusTeszt.java @link.letöltés {@docRoot}/../data/applet EletciklusTeszt.jar @since Java útikalauz programozóknak */ public class EletciklusTeszt extends java.applet.Applet implements java.awt.event.ActionListener { /** Verziószám. */ private final static long serialVersionUID = 15L; /** Üzenetkijelző szövegmező */ private transient java.awt.TextArea szövegmező = new java.awt.TextArea(10, 80); /** Üzenő szövegmezőt törlő nyomógomb */ private transient java.awt.Button törlőgomb = new java.awt.Button("töröl"); /** Felületet érvényesítő nyomógomb */ private transient java.awt.Button érvényesgomb = new java.awt.Button("validate"); /** Appletet átméretező nyomógomb */ private transient java.awt.Button méretgomb = new java.awt.Button("resize"); /** Felületet újrarajzoltató nyomógomb */ private transient java.awt.Button újragomb = new java.awt.Button("repaint"); /** Példányszámláló */ private static transient int példányszámláló; /** Példány azonosító */ private transient int példányazonosító; /** Lépésszámláló */ private transient int lépésszámláló; /** Blokkolás hossza másodpercben */ private transient int blokkolás = 5; /** {@code init} végrehajtása blokkolódik-e */ private transient boolean blokkol_init; /** {@code start} végrehajtása blokkolódik-e */ private transient boolean blokkol_start; /** {@code stop} végrehajtása blokkolódik-e */ private transient boolean blokkol_stop; /** {@code destroy} végrehajtása blokkolódik-e */ private transient boolean blokkol_destroy; /** {@code paint} végrehajtása blokkolódik-e */ private transient boolean blokkol_paint; /** {@code update} végrehajtása blokkolódik-e */ private transient boolean blokkol_update; /** {@code actionPerformed} végrehajtása blokkolódik-e */ private transient boolean blokkol_action; /** A grafikus felhasználói felületet felépítő konstruktor */ public EletciklusTeszt() { synchronized(getClass()) { példányazonosító = ++példányszámláló; //appletpéldányok számlálása } java.awt.Panel gombok = new java.awt.Panel(); //vezérlőgombok panelje gombok.add(méretgomb); méretgomb.addActionListener(this); gombok.add(érvényesgomb); érvényesgomb.addActionListener(this); gombok.add(újragomb); újragomb.addActionListener(this); gombok.add(törlőgomb); törlőgomb.addActionListener(this); szövegmező.setEditable(false); setLayout(new java.awt.BorderLayout()); add(java.awt.BorderLayout.NORTH, gombok); add(szövegmező); jelent("konstruktor", false); //konstruktor jelentése } /** Applet leírása @return Az applet leírása és azonosító neve */ @Override public String getAppletInfo() { return "Életciklus metódusok hívását szemléltető applet: "+ getClass().getSimpleName()+példányazonosító; } /** Applet indítási paramétereinek leírása @return Az appletparaméterek leírása */ @Override public String[][] getParameterInfo() { String info[][]={ {"blockTime", "pozitív egész", "Blokkolás időtartama másodpercben"}, {"blockMethods", "String", "blokkolandó metódusok nevei"}}; return info; } /** Applet inicializálása */ @Override public void init() { String param; if ((param=getParameter("blockTime"))!=null) //paraméterek feldolgozása try { blokkolás = Integer.parseInt(param); } catch (Exception e) {} if (blokkolás>0 && (param=getParameter("blockMethods"))!=null) { param=param.toLowerCase(); blokkol_init=param.indexOf("init")!=-1; blokkol_start=param.indexOf("start")!=-1; blokkol_stop=param.indexOf("stop")!=-1; blokkol_destroy=param.indexOf("destroy")!=-1; blokkol_paint=param.indexOf("paint")!=-1; blokkol_update=param.indexOf("update")!=-1; blokkol_action=param.indexOf("action")!=-1; } jelent("init", blokkol_init); //init jelentése } /** Applet indítása */ @Override public void start() { jelent("start", blokkol_start); //start jelentése } /** Applet megállítása */ @Override public void stop() { jelent("stop", blokkol_stop); //stop jelentése } /** Applet megszüntetése */ @Override public void destroy() { jelent("destroy", blokkol_destroy); //destroy jelentése } /** Applet felszabadítása */ @Override public void finalize() throws Throwable { jelent("finalize", false); //finalize jelentése super.finalize(); } /** Az applet megjelenítése. @param g A felhasználandó grafikus környezet. */ @Override public void paint(java.awt.Graphics g) { jelent("paint", blokkol_paint); //paint jelentése super.paint(g); } /** Az applet növekményes megjelenítése. @param g A felhasználandó grafikus környezet. */ @Override public void update( java.awt.Graphics g ) { jelent("update", blokkol_update); //update jelentése super.update(g); } /** Nyomógomb megnyomásakor eseménykezelés. @param esemény A gombnyomást reprezentáló eseményobjektum. */ public void actionPerformed(java.awt.event.ActionEvent esemény) { jelent("actionPerformed", blokkol_action); //actionPerformed jelentése if (esemény.getSource()==törlőgomb) { //töröl szövegmező.setText(""); } else if (esemény.getSource()==újragomb) { //repaint repaint(); } else if (esemény.getSource()==érvényesgomb) { //validate validate(); } else if (esemény.getSource()==méretgomb) { //resize resize(getSize().height, getSize().width); } } /** Metódushívás jelentése és igény esetén a végrehajtás blokkolása. @param metódus A meghívott metódus neve @param blokkol A végrehajtást kell-e blokkolni */ private void jelent(String metódus, boolean blokkol) { lépésszámláló++; //lépésszámláló növelése String id=getClass().getSimpleName()+példányazonosító+ "/"+lépésszámláló+". lépés: "+metódus; String szöveg=id+" meghívása a "+Thread.currentThread()+ Thread.currentThread().getThreadGroup()+"-ból."; System.out.println(szöveg); //jelentés megjelenítése szövegmező.append(szöveg+"\n"); if (blokkol) { //blokkolás long vége=System.currentTimeMillis()+1000; int számláló=blokkolás; while (számláló-->0) { //másodpercek számlálása System.err.println(id+" blokkolva még "+számláló+"s"); while (System.currentTimeMillis()