package elte.java2_utikalauz5.applet; /** Azonos HTML lapon található appletkommunikációt szemléltető példaprogram.

@link.forrásfájl {@docRoot}/../data/applet/src KommunikacioTeszt.java @link.letöltés {@docRoot}/../data/applet KommunikacioTeszt.jar @since Java Útikalauz programozóknak */ public class KommunikacioTeszt extends java.applet.Applet implements java.awt.event.ActionListener { /** Verziószám. */ private final static long serialVersionUID = 15L; /** Példányszámláló */ private static int példányszámláló; /** Példány azonosító */ private transient int példányazonosító; /** Indításszámláló */ private transient int indításszámláló; /** Üzenet megjelenítése külön ablakban. @param szöveg a megjelenítendő üzenet */ private void üzen( String szöveg ) { java.awt.TextArea üzenet = new java.awt.TextArea(szöveg); final java.awt.Frame üzenőablak = new java.awt.Frame("Infó"); üzenőablak.add(üzenet); üzenőablak.addWindowListener( new java.awt.event.WindowAdapter() { public void windowClosing(java.awt.event.WindowEvent we) { üzenőablak.dispose(); //ablak bezárása } }); üzenet.setEditable(false); üzenőablak.setSize(400, 300); üzenőablak.setVisible( true ); } /** információs címke */ transient java.awt.Label címke = new java.awt.Label(); /** paraméternév beviteli szövegmező */ transient java.awt.TextField paraméternév = new java.awt.TextField("name", 20); /** paraméterértéket lekérdező nyomógomb */ transient java.awt.Button paramétergomb = new java.awt.Button("getParameter"); /** appletek listája */ transient java.awt.List appletlista=new java.awt.List(10, false); /** appletlistát megjelenítő gomb */ transient java.awt.Button listagomb=new java.awt.Button("getApplets"); /** aktuális appletlista */ private transient java.util.Vector appletek = new java.util.Vector(); /** grafikus felületet felépítő konstruktor */ public KommunikacioTeszt() { synchronized(getClass()) { példányazonosító = ++példányszámláló; //appletpéldányok számlálása } java.awt.Panel panel = new java.awt.Panel(); //alsó panel paramétergomb.addActionListener(this); //eseménykezelők regisztrálása listagomb.addActionListener(this); appletlista.addActionListener(this); panel.add(listagomb); //felület felépítése panel.add(paraméternév); panel.add(paramétergomb); setLayout(new java.awt.BorderLayout()); add(java.awt.BorderLayout.NORTH, címke); add(appletlista); add(java.awt.BorderLayout.SOUTH, panel); } /** Applet leírása @return Az applet leírása és azonosító neve */ @Override public String getAppletInfo() { return "Azonos HTML lapon található appletek kommunikációs lehetőségét"+ " szemléltető applet: "+this; } /** Applet szöveges formája @return Az applet rövid neve és azonosítója */ @Override public String toString() { return getClass().getSimpleName()+példányazonosító; } /** Applet indítása */ @Override public void start() { java.io.InputStream adat = getAppletContext().getStream( getClass().getSimpleName()); int számláló = 0; //indítási számláló beolvasása if (adat!=null) { java.io.DataInputStream dis = null; try { dis = new java.io.DataInputStream(adat); számláló = dis.readInt(); } catch (java.io.IOException ioe) {} finally { if (dis!=null) try { dis.close(); } catch (java.io.IOException ioe2) {} } } számláló++; //számláló növelése címke.setText(this+" / startszámláló="+számláló); //és kiírása java.io.ByteArrayOutputStream baos =new java.io.ByteArrayOutputStream(); java.io.DataOutputStream dos = new java.io.DataOutputStream( baos ); try { //új érték átadása a böngészőnek dos.writeInt(számláló); adat = new java.io.ByteArrayInputStream(baos.toByteArray()); getAppletContext().setStream(getClass().getSimpleName(), adat); } catch (java.io.IOException ioe) {} finally { if (dos!=null) try { dos.close(); } catch (java.io.IOException ioe2) {} } } /** 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) { if (esemény.getSource()==listagomb) { //appletlista felépítése appletek.clear(); appletlista.removeAll(); appletek.addAll( java.util.Collections.list(getAppletContext().getApplets())); for (java.util.Iterator iter = appletek.iterator(); iter.hasNext();) { java.applet.Applet applet = iter.next(); if (applet==null) iter.remove(); //érvénytelen appletreferencia else appletlista.add( applet.toString() ); if (applet == this) //saját maga kiválasztása appletlista.select( appletlista.getItemCount()-1 ); } } else if (esemény.getSource()==paramétergomb) { //appletről paraméterek java.applet.Applet applet = appletlista.getSelectedIndex()<0 ? this: appletek.elementAt(appletlista.getSelectedIndex()); üzen(applet+".getParameter("+paraméternév.getText()+")=\n"+ applet.getParameter(paraméternév.getText())); } else if (esemény.getSource()==appletlista) { //listaelem kiválasztása java.applet.Applet applet = //kiválasztott appletről információk appletek.elementAt(appletlista.getSelectedIndex()); üzen(applet+".getAppletInfo()=\n"+applet.getAppletInfo()); } } }