1*f1fbf3c2SXin Li package sample.rmi; 2*f1fbf3c2SXin Li 3*f1fbf3c2SXin Li import java.applet.*; 4*f1fbf3c2SXin Li import java.awt.*; 5*f1fbf3c2SXin Li import java.awt.event.*; 6*f1fbf3c2SXin Li import javassist.tools.rmi.ObjectImporter; 7*f1fbf3c2SXin Li import javassist.tools.rmi.ObjectNotFoundException; 8*f1fbf3c2SXin Li import javassist.tools.web.Viewer; 9*f1fbf3c2SXin Li 10*f1fbf3c2SXin Li public class CountApplet extends Applet implements ActionListener { 11*f1fbf3c2SXin Li private Font font; 12*f1fbf3c2SXin Li private ObjectImporter importer; 13*f1fbf3c2SXin Li private Counter counter; 14*f1fbf3c2SXin Li private AlertDialog dialog; 15*f1fbf3c2SXin Li private String message; 16*f1fbf3c2SXin Li 17*f1fbf3c2SXin Li private String paramButton; 18*f1fbf3c2SXin Li private String paramName; 19*f1fbf3c2SXin Li init()20*f1fbf3c2SXin Li public void init() { 21*f1fbf3c2SXin Li paramButton = getParameter("button"); 22*f1fbf3c2SXin Li paramName = getParameter("name"); 23*f1fbf3c2SXin Li importer = new ObjectImporter(this); 24*f1fbf3c2SXin Li commonInit(); 25*f1fbf3c2SXin Li } 26*f1fbf3c2SXin Li 27*f1fbf3c2SXin Li /* call this method instead of init() if this program is not run 28*f1fbf3c2SXin Li * as an applet. 29*f1fbf3c2SXin Li */ applicationInit()30*f1fbf3c2SXin Li public void applicationInit() { 31*f1fbf3c2SXin Li paramButton = "OK"; 32*f1fbf3c2SXin Li paramName = "counter"; 33*f1fbf3c2SXin Li Viewer cl = (Viewer)getClass().getClassLoader(); 34*f1fbf3c2SXin Li importer = new ObjectImporter(cl.getServer(), cl.getPort()); 35*f1fbf3c2SXin Li commonInit(); 36*f1fbf3c2SXin Li } 37*f1fbf3c2SXin Li commonInit()38*f1fbf3c2SXin Li private void commonInit() { 39*f1fbf3c2SXin Li font = new Font("SansSerif", Font.ITALIC, 40); 40*f1fbf3c2SXin Li Button b = new Button(paramButton); 41*f1fbf3c2SXin Li b.addActionListener(this); 42*f1fbf3c2SXin Li add(b); 43*f1fbf3c2SXin Li dialog = new AlertDialog(); 44*f1fbf3c2SXin Li message = "???"; 45*f1fbf3c2SXin Li } 46*f1fbf3c2SXin Li destroy()47*f1fbf3c2SXin Li public void destroy() { 48*f1fbf3c2SXin Li dialog.dispose(); 49*f1fbf3c2SXin Li } 50*f1fbf3c2SXin Li start()51*f1fbf3c2SXin Li public void start() { 52*f1fbf3c2SXin Li try { 53*f1fbf3c2SXin Li counter = (Counter)importer.lookupObject(paramName); 54*f1fbf3c2SXin Li message = Integer.toString(counter.get()); 55*f1fbf3c2SXin Li } 56*f1fbf3c2SXin Li catch (ObjectNotFoundException e) { 57*f1fbf3c2SXin Li dialog.show(e.toString()); 58*f1fbf3c2SXin Li } 59*f1fbf3c2SXin Li } 60*f1fbf3c2SXin Li actionPerformed(ActionEvent e)61*f1fbf3c2SXin Li public void actionPerformed(ActionEvent e) { 62*f1fbf3c2SXin Li counter.increase(); 63*f1fbf3c2SXin Li message = Integer.toString(counter.get()); 64*f1fbf3c2SXin Li repaint(); 65*f1fbf3c2SXin Li } 66*f1fbf3c2SXin Li paint(Graphics g)67*f1fbf3c2SXin Li public void paint(Graphics g) { 68*f1fbf3c2SXin Li g.setFont(font); 69*f1fbf3c2SXin Li g.drawRect(50, 50, 100, 100); 70*f1fbf3c2SXin Li g.setColor(Color.blue); 71*f1fbf3c2SXin Li g.drawString(message, 60, 120); 72*f1fbf3c2SXin Li } 73*f1fbf3c2SXin Li main(String[] args)74*f1fbf3c2SXin Li public static void main(String[] args) { 75*f1fbf3c2SXin Li Frame f = new Frame("CountApplet"); 76*f1fbf3c2SXin Li CountApplet ca = new CountApplet(); 77*f1fbf3c2SXin Li f.add(ca); 78*f1fbf3c2SXin Li f.setSize(300, 300); 79*f1fbf3c2SXin Li ca.applicationInit(); 80*f1fbf3c2SXin Li ca.start(); 81*f1fbf3c2SXin Li f.setVisible(true); 82*f1fbf3c2SXin Li } 83*f1fbf3c2SXin Li } 84