1 / 27

Programowanie sieciowe w Javie

Programowanie sieciowe w Javie. Michał Kuciapski m.kuciapski@univ.gda.pl. Metody sieciowe apletów. Metody sieciowe apletów. Klasy tworzenia apletu. Wykorzystywane klasy. Aby utworzyć aplet należy dziedziczyć po jednej z klas: java.applet.Applet javax.swing.JApplet

astro
Download Presentation

Programowanie sieciowe w Javie

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Programowanie sieciowe w Javie Michał Kuciapski m.kuciapski@univ.gda.pl

  2. Metody sieciowe apletów

  3. Metody sieciowe apletów Klasy tworzenia apletu

  4. Wykorzystywane klasy • Aby utworzyć aplet należy dziedziczyć po jednej z klas: • java.applet.Applet • javax.swing.JApplet • Do tworzenia interfejsu graficznego używamy odpowiednio: • java.awt.* - w przypadku tworzenia apletu jako Applet • javax.swing.* - w przypadku tworzenia apletu jako • JApplet

  5. Metody sieciowe apletów Cykl życia apletu

  6. Etapy cyklu życia • Cykl życia aplety składa się z kilku etapów: • public void init() • public void start() • public void stop() • public void destroy() • paint(Graphics g)

  7. Przykład • import java.applet.Applet; import java.awt.Graphics; • public class CyklZyciaApletu extends Applet { • StringBuffer tekstApletu; • public void init() { • tekstApletu = new StringBuffer(); • dodajElement("inicjalizowanie... "); } • public void start() { • dodajElement("uruchamianie... "); } • public void stop() { • dodajElement("zatrzymanie... "); } • public void destroy() { • dodajElement("usuwanie..."); }

  8. Przykład c.d. • private void dodajElement(String tekst) { • tekstApletu.append(tekst); • repaint(); • } • public void paint(Graphics g) { • g.drawOval(0,0,getWidth() - 10 , getHeight() - 10); • g.drawString(tekstApletu.toString(), getWidth()/4, getHeight()/2); • } • }

  9. Metody sieciowe apletów Pobieranie danych lokalizacji apletu

  10. Miejsca pobierania danych • Aplety pobierają najczęściej dane z: • Katalogu, z którego aplet pochodzi – baza kodowa • Katalogu strony HTML, w której aplet jest zagnieżdżony – baza dokumentowa • Do ustalanie baz kodowej i dokumentowej służą odpowiednio metody: • URLgetCodeBase()– adres URL katalogu • zawierającego aplet • URLgetDocumentBase() – adres URL strony • zawierającej aplet

  11. Przykład 1 • import java.awt.Graphics; • import java.applet.Applet; • public class BazaApletu extends Applet • { • public void paint(Graphics g) • { • g.drawString("Baza kodowa apletu: " + this.getCodeBase() .toString(), 20, 30); • g.drawString("Baza dokumentowa apletu: " + this.getDocumentBase().toString(), 20, 50); • } • }

  12. Przykład 2 • import javax.swing.*; • public class BazaApletuSwing extends JApplet { • public void init() • { • JLabel bazaKodowa = new JLabel(); • JLabel bazaDokumentowa = new JLabel(); • bazaKodowa.setText(this.getCodeBase().toString()); • bazaDokumentowa.setText(this.getDocumentBase().toString()); • getContentPane().setLayout(new BoxLayout(getContentPane(),BoxLayout.Y_AXIS)); • this.add(bazaKodowa); • this.add(bazaDokumentowa); • } • }

  13. Metody sieciowe apletów Pobieranie i przesyłanie danych

  14. Zastosowania • Aplety w zakresie pobierania i przesyłania danych umożliwiają m.in.: • Ładowanie obrazków • Ładowanie dźwięków • Wyświetlanie dokumentów • Przesyłanie danych pomiędzy sobą

  15. Ładowanie obrazków • Ładowanie obrazków możliwe jest poprzez metody klasy Image : • Image getImage(URL url) • Image getImage(URL url, String nazwa) • Metody te są dostępne poprzez: • Klasę Applet • Klasę java.awt.Toolkit – dzięki metodzie statycznej getDefaultToolkit()

  16. Przykład • import java.awt.*; • import java.applet.*; • import java.net.*; • public class PobieranieObrazkow extends Applet { • Image obrazek1; Image obrazek2; • public void init() • { • try • { • URL adres = new URL(this.getCodeBase(), • this.getParameter("Obrazek1")); • this.obrazek1 = this.getImage(adres);

  17. Przykład c.d. • Toolkit tk = java.awt.Toolkit.getDefaultToolkit(); • adres = new URL(this.getCodeBase(), this.getParameter("Obrazek2")); • obrazek2 = tk.getImage(adres); • } • catch(MalformedURLException e){} • } • public void paint(Graphics g) • { • g.drawImage(obrazek1,0,0,this); • // int szerokosc = obrazek1.getWidth(this); • g.drawString("I jego najlepszy kumpel ;-)",50,180); • g.drawImage(obrazek2,0,200,this); • } • }

  18. Ładowanie dźwięku • Ładowanie dźwięku możliwe jest porzez intefejs AudioClip pakietu Applet. • Obsługiwanym przez Java API formatem począwszy od wersji 1.2 są: AIFF, AU (jednokanałowy, 8 bitowy, µlaw, 8000 Hz), WAV, MIDI (typ 0 i typ 1), RMF. • Narzędziem umożliwiającym konwersję różnych formatów na ten format jest audiotool.

  19. Ładowanie dźwięku - metody • Utworzenie obiektu umożliwiającego odtwarzanie dźwięku dokonywane jest poprzez dwie metody: • AudioClip getAudioClip(URL adres) • AudioClip getAudioClip(URL adres, String nazwa) • Interfejs AudioClip zawiera metody: • void loop() • play: • void play(URL adres) • void play(URL adres, String nazwa) • voidstop()

  20. Przykład • AudioClip dzwiek = this.getAudioClip(this.getCodeBase(),"Aplety/muzyka.au"); • public void start() { • if(loop == false) • { • dzwiek.loop(); • loop = true; • }} • public void stop() { • if(loop) • { • dzwiek.stop(); • loop = false; • }}

  21. Wyświetlanie dokumentów • Za pomocą klasy AppletContext możliwe jest wyświetlanie dolumentów HTML w okienie przęgladarki. Służą do tego dwie metody: • public void showDocument(URL adres) • public void showDocument(URL adres, String doceloweOkno) • Parametr doceloweOkno może mieć wartości: • "_blank" • "nazwaOkna" • "_self" • "_parent" • "_top"

  22. Wyświetlanie dokumentów - przykład • AppletContext kontekst = this.getAppletContext(); • String typOkna; • if (jcbOkno.getSelectedItem().toString().equalsIgnoreCase("Nowe Okno")) • typOkna = "_blank"; • else • typOkna = "_self"; • try{ • URL sciezka = new URL(this.getCodeBase() + "Aplety/dokumenty/" • + jcbDokumenty.getSelectedItem().toString()); • System.out.println(this.getCodeBase() + "Aplety/dokumenty/" + • jcbDokumenty.getSelectedItem().toString()); • System.out.println(typOkna); • kontekst.showDocument(sciezka, typOkna); • } • catch(MalformedURLException e) {}

  23. Przesyłanie danych pomiędzy apletami • Z przesyłaniem danych pomiędzy apletami wiążą się następujące restrykcje.: • Wiele przeglądarek wymaga, aby aplety pochodziły z tego samego serwera • Wiele przeglądarek wymaga, aby aplety miały tą samą bazę kodową • Java API wymaga, aby aplety były uruchomione na tej samej stronie w tym samym oknie przeglądarki

  24. Przesyłanie danych pomiędzy apletami • Znajdowanie apleta opiera się o sprawdzenie jego nazwy przy wykorzystaniu metody getApplet klasy AppletContext. • Znalezienie apletu poprzez pobranie adresu jego obiektu jest jednoznaczne z możliwością wywoływania jego metod. • Nazwę apletu podajemu w tagu <APPLET> jako atrybut NAME • <APPLET codebase="classes" code="Aplety/PobieranieObrazkow.class" width=300 height=470 name="pobieranieObrazkow" >

  25. Przesyłanie danych pomiędzy apletami - przykład • this.showStatus("Zostaly przeslane dane!!!"); • Applet aplet = getAppletContext().getApplet("odbiorca"); • ((ApletPrzesylanieOdbiorca)aplet).ustawPrzeslaneDane(jtaDane.getText()); • public void ustawPrzeslaneDane(String tekst) • { • jtaDane.setSelectedTextColor(java.awt.Color.RED); • jtaDane.setText(tekst); • Applet aplet = getAppletContext().getApplet("nadawca"); • ((ApletPrzesylanieNadawca)aplet).ustawPrzeslaneDane("DZIĘKI ZA PRZESŁANIE DANYCH!!!"); • }

  26. Aplety wielowątkowe • W związku z tym, że dla utworzenia apletu konieczne jest dziedziczenia po klasie Applet lub JApplet dla pisania apletów wielowątkowych wykorzystujemy interfejs Runnable. • public class ApletWielowatkowy extends Applet implements Runnable

  27. Aplety wielowątkowe - przykład • Thread watek = new Thread(this); • watek.start(); • …. • public void run() { • while(true) { • try { • repaint(); • Thread.currentThread().sleep(5000); • dorysujTrzeci = true; • repaint(); • Thread.currentThread().sleep(5000); • dzwiek.play(); • } • catch(InterruptedException e){} }

More Related