URLconnection 1 Verwendung einer URLconnection und showDocument( ) 1.) Erstellen Sie ein Applet, welches eine TextArea und ein Panel enthält. Das Panel nimmt die Bedien- Buttons auf. Wenn man zwei der URL- Buttons betätigt, sollen mit Hilfe von showDocument( ) die Inhalte der URL, die auf dem jeweiligen Button angegeben ist, in einem neuen Browserfenster angezeigt wrden. Beim Betätigen des mittleren URL- Buttons soll mittels einer URL- Connection der Inhalt der angegebenen Datei vom betreffenden Server geholt und in der TextArea angezeigt weden. Wird der clear-Button gedrückt, soll die TextArea gelöscht werden. Bei der Verwendung einer URL- Connection ist zu bedenken, daß ein Applet nur zu dem Server eine SocketVerbindung aufbauen kann, von dem es geladen wurde. Zum Testen müssen Sie daher das Applet auf dem betreffenden Server ablegen. Verwenden Sie als Server den Rechner "ntold". Auf diesem Rechner bestehen die Freigaben netz1 bis netz11. Auf deren Inhalte können Sie mit Hilfe des Microsoft- Netzwerks zugreifen. Der Zugriff ist dabei für folgende lokale Benutzerkennungen (Labor AI) auf folgende Freigaben möglich : vom Benutzer fuzzy1 auf netz1 vom Benutzer fuzzy2 auf netz2 ... ... vom Benutzer fuzzy10 auf netz10 Mit einem Browser sind die in den Freigabeverzeichnissen abgelegten Dateien über die folgenden URLs fuzzy1: http://ntold/www/netz1/ ... ... fuzzy10: http://ntold/www/netz10/ abrufbar. URLconnection 2 Lösung zu 1 import java.applet.Applet; import java.awt.*; import java.net.*; import java.io.*; public class SearchButtonDemo extends Applet{ Panel buttonPanel,areaPanel; TextArea ta1; Button b1,b2,b3,b4; String b1str="http://www.lycos.com"; String b2str="http://127.0.0.1/usa/welcome.txt"; String b3str="http://127.0.0.1/usa/"; String urlString; URL myUrl; public void init(){ b1=new Button(b1str); b2=new Button(b2str); b3=new Button(b3str); b4=new Button("clear"); buttonPanel=new Panel(); buttonPanel.add(b1); buttonPanel.add(b2); buttonPanel.add(b3); buttonPanel.add(b4); areaPanel=new Panel(); ta1=new TextArea(10,90); areaPanel.add(ta1); setLayout(new BorderLayout()); add("South",buttonPanel); add("Center",areaPanel); } public boolean action(Event evt, Object what){ if(b1.equals(evt.target)){ showContent(b1str); } if(b2.equals(evt.target)){ showData(b2str); } if(b3.equals(evt.target)){ showContent(b3str); } if(b4.equals(evt.target)){ areaPanel.remove(ta1); ta1=new TextArea(10,90); areaPanel.add(ta1); validate(); } return true; } URLconnection 3 public void showContent(String urlString){ // // Inhalt in einem neuen Browserfenster anzeigen // try{ myUrl= new URL(urlString); } catch(MalformedURLException e){ ta1.appendText("Error :"+e); }// URL anlegen getAppletContext().showDocument(myUrl,"_blank"); } public void showData(String urlString){ // // Inhalt einer Datei als stream lesen // und in einer TextArea anzeigen // DataInputStream URLinput; try{ //Anlegen der URL myUrl= new URL(urlString); try{ URLinput=new DataInputStream(myUrl.openStream()); String line=""; //Anzeigen des Dokumentes while((line = URLinput.readLine())!= null) ta1.appendText(line+"\n"); URLinput.close(); } catch(IOException ex){ ta1.appendText("Error: "+ex); }//stream öffnen } catch(MalformedURLException e){ ta1.appendText("Error :"+e); }//try URL anlegen }//showData } URLconnection 4 Lösung zu 2 import java.applet.Applet; import java.awt.*; public class DrawRectDemo extends Applet{ Button up,down,right,left,clear,show; Panel buttonPanel; GraphicCanvas gc; Dimension dim; public void init(){ up=new Button("up"); down=new Button("down"); right=new Button("right"); left=new Button("left"); clear=new Button("clear"); show=new Button("show"); buttonPanel=new Panel(); dim=new Dimension(size().width,size().height-100); gc=new GraphicCanvas(dim); buttonPanel.add(up); buttonPanel.add(down); buttonPanel.add(right); buttonPanel.add(left); buttonPanel.add(clear); buttonPanel.add(show); setLayout(new BorderLayout()); add("Center",gc); add("North",buttonPanel); } public boolean action(Event evt, Object what){ if ( down.equals(evt.target)){ gc.setKoordinaten(gc.getx(),gc.gety()+10); gc.repaint(); } if ( up.equals(evt.target)){ gc.setKoordinaten(gc.getx(),gc.gety()-10); gc.repaint(); } if ( right.equals(evt.target)){ gc.setKoordinaten(gc.getx()+10,gc.gety()); gc.repaint(); } if ( left.equals(evt.target)){ gc.setKoordinaten(gc.getx()-10,gc.gety()); gc.repaint(); } if ( clear.equals(evt.target)){ gc.setKoordinaten(1,1); gc.clearCanvas(); gc.repaint(); } if ( show.equals(evt.target)){ gc.setKoordinaten(1,1); gc.showCanvas(); URLconnection 5 gc.repaint(); } return true; } } class GraphicCanvas extends Canvas{ Dimension prefSize; //gewünschte Canvas-Größe private int x=1,y=1; // Rechteck obere linke Ecke private int breite=10,hoehe=10; // Rechteck private Color c; //Zeichenfarbe boolean clearFlag=false; public GraphicCanvas(Dimension prefSize){ setForeground(Color.blue); setBackground(Color.white); this.prefSize=prefSize; } public Dimension preferredSize(){ return prefSize; } public Dimension minimumSize(){ return prefSize; } public void setKoordinaten(int x, int y){ this.x=x; this.y=y; } public int getx(){ return x; } public int gety(){ return y; } public void setmyColor(Color c){ this.c=c; } public void clearCanvas(){ clearFlag=true; } public void showCanvas(){ clearFlag=false; } public void update(Graphics g){ if (clearFlag==true){ g.setColor(Color.yellow); g.fillRect(1,1,prefSize.width,prefSize.height); clearFlag=false; } else URLconnection 6 { g.setColor(Color.blue); //public void drawRect(int x, int y, int width, int height) g.drawRect(x,y,breite,hoehe); } } public void paint(Graphics g){ g.setColor(c); //public void drawRect(int x, int y, int width, int height) g.drawRect(x,y,breite,hoehe); } }//class GraphicCanvas