import java.applet.Applet; import java.awt.*; import java.awt.event.*; import java.io.*; import java.net.*; import java.util.*; public class GrKlient3 extends Applet implements ActionListener, Runnable, JooniseKuular{ /** * Tekstiväli nime sisestuseks. Hiljem saadetakse selle * kaudu andmeid võrku. */ TextField tf1=new TextField(15); /** * Paroolisisestusväli. */ TextField tf2=new TextField(15); /** * Serveri nime tarvis. */ TextField tf3=new TextField("don2", 15); /** * Vajutuse peale ühendatakse klient serveriga. */ Button nupp1=new Button("Ühenda"); /** * Serverist saabuvad andmed. */ TextArea ta1=new TextArea(5, 20); /** * Võrgust saabuv joonis, võimalus otse võrku joonistada. */ Tahvel3 tahvel=new Tahvel3(); /** * Rahus omaette joonistamiseks. Hiljem võimalik kopeerida. */ Tahvel3 tahvelOma=new Tahvel3(); /** * Pilt võrgutahvlilt oma tahvlile. */ Button kopeeriPilt=new Button("Kopeeri"); /** * Pilt oma tahvlilt võrku. */ Button piltVorku=new Button("Võrku"); /** * Voog võrku saatmiseks. */ PrintWriter pw1; /** * Voog võrgust lugemiseks. */ BufferedReader br1; /** * Kuular kujundite saatmiseks. Siin juhul liiguvad * võrgust saabuvad andmed avalikule tahvlile. */ JooniseKuular kuulaja=null; /** * Konstruktor kujunduse sättimiseks. */ public GrKlient3(){ Panel p1=new Panel(new GridLayout(3, 2)); p1.add(new Label("Kasutajanimi:")); p1.add(tf1); p1.add(new Label("Parool:")); p1.add(tf2); p1.add(new Label("Server:")); p1.add(tf3); try{ tf3.setText(getCodeBase().getHost()); }catch (Exception ex){} add(p1); add(nupp1); nupp1.addActionListener(this); tf2.setEchoChar('*'); } public void lisaJooniseKuular(JooniseKuular j){ kuulaja=j; } public void actionPerformed(ActionEvent e){ if(e.getSource()==tf1){ pw1.println(tf1.getText()); tf1.setText(""); } if(e.getSource()==nupp1){ try{ Socket sc=new Socket(tf3.getText(), 3001); pw1=new PrintWriter(sc.getOutputStream(), true); br1=new BufferedReader(new InputStreamReader(sc.getInputStream())); pw1.println(tf1.getText()); pw1.println(tf2.getText()); new Thread(this).start(); removeAll(); System.out.println("tyhjendus"); setLayout(new BorderLayout()); Panel kesk=new Panel(new GridLayout(1, 2)); kesk.add(ta1); Panel tahvlid=new Panel(new GridLayout(2, 1)); tahvlid.add(tahvelOma); tahvlid.add(tahvel); kesk.add(tahvlid); add(kesk, BorderLayout.CENTER); Panel nupud=new Panel(); nupud.add(kopeeriPilt); nupud.add(piltVorku); Panel alumine=new Panel(new BorderLayout()); alumine.add(tf1, BorderLayout.CENTER); alumine.add(nupud, BorderLayout.EAST); add(alumine, BorderLayout.SOUTH); tf1.addActionListener(this); tf1.setText(""); kopeeriPilt.addActionListener(this); piltVorku.addActionListener(this); tahvel.lisaJooniseKuular(this); tahvelOma.lisaJooniseKuular(tahvelOma); lisaJooniseKuular(tahvel); validate(); }catch(Exception viga){ ta1.setText(viga.getMessage()); } } if(e.getSource()==kopeeriPilt){ tahvelOma.hoidlaUusSisu(tahvel.hoidlaKoopia()); } if(e.getSource()==piltVorku){ Iterator it=tahvelOma.hoidlaKoopia().iterator(); while(it.hasNext()){ pw1.println(it.next()); } } } public void run(){ try{ while(true){ String rida=br1.readLine(); if(rida.startsWith(".p")){ saada(rida); }else{ ta1.append(rida+"\n"); } } }catch(Exception viga){ viga.printStackTrace(); ta1.append("Oled väljas"); } } void saada(String andmed){ if(kuulaja==null){return;} kuulaja.kujund(andmed); } public void kujund(String andmed){ pw1.println(andmed); } public static void main(String[] argumendid){ Frame f=new Frame(); f.add(new GrKlient3()); f.setSize(500, 400); f.setVisible(true); f.addWindowListener(new Raamikuular()); } static class Raamikuular extends WindowAdapter{ public void windowClosing(WindowEvent e){ System.out.println("Programmi ots"); System.exit(0); } } }