// AppletClient.java import java.rmi.*; import java.awt.*; import java.awt.event.*; import java.applet.*; import java.rmi.server.*; public class AppletClient extends Applet implements ActionListener, CountClientInterface { Count remCount; TextField tfCnt; Button bStart; String bslabel = "Start"; public void init() { try { setLayout(new GridLayout(3,1)); add(new Label("Count:")); tfCnt = new TextField(7); tfCnt.setEditable(false); add(tfCnt); bStart = new Button(bslabel); bStart.addActionListener(this); add(bStart); UnicastRemoteObject.exportObject(this); showStatus("Binding remote object"); remCount = (Count) Naming.lookup("Count001"); showStatus("Registering with remote object"); remCount.addClient(this); tfCnt.setText(Integer.toString(remCount.get())); } catch (Exception e) { e.printStackTrace(); } } public void paint() { try { tfCnt.setText(Integer.toString(remCount.get())); } catch (Exception e) { e.printStackTrace(); } } public void actionPerformed (ActionEvent ev) { try { showStatus("Incrementing..."); for (int i = 0 ; i < 1000 ; i++ ) remCount.increment(); showStatus("Done"); } catch (Exception e) { e.printStackTrace(); } } public void update(int val) throws RemoteException { showStatus("Update"); tfCnt.setText(Integer.toString(val)); } }