Wykład 11: Programowanie Apletów

Podobne dokumenty
Kurs programowania. Wykład 6. Wojciech Macyna. 7 kwietnia 2016

Podstawy Programowania

Podstawy programowania GUI niskiego poziomu. APLETY.

Programowanie obiektowe

Język JAVA podstawy. wykład 2, część 2. Jacek Rumiński. Politechnika Gdańska, Inżynieria Biomedyczna

Programowanie Multimediów. Programowanie Multimediów JAVA. wprowadzenie do programowania (3/3) [1]

Multimedia JAVA. Historia

Interaktywne aplety obsługa zdarzeń, uruchamianie apletu przez przeglądarkę lub maszynę wirtualną Javy. Tworzenie łącz w apletach

Spis treści. 1 Aplet. 2 Od aplikacji do apletu. 1 Aplet 1. 2 Od aplikacji do apletu 1. 3 Budowa apletu 3. 4 Cykl życia apletu 4

Tworzenie i obsługa graficznego interfejsu uŝytkownika

Java jako zdalny interfejs aplikacji Webowych aplety

Programowanie komputerów Wykład 6: Aplety Java

Autor: dr inż. Zofia Kruczkiewicz, Programowanie aplikacji internetowych 1

Wątki. Definiowanie wątków jako klas potomnych Thread. Nadpisanie metody run().

Programowanie graficznego interfejsu użytkownika. Wykład 8. Maciej Wołoszyn 10 maja 2006

Sposoby tworzenia projektu zawierającego aplet w środowisku NetBeans. Metody zabezpieczenia komputera użytkownika przed działaniem apletu.

Operatory. Składnia. Typy proste. Znaki specjalne

JAVA. Java jest wszechstronnym językiem programowania, zorientowanym. apletów oraz samodzielnych aplikacji.

Programowanie obiektowe zastosowanie języka Java SE

Programowanie Multimediów JAVA. wprowadzenie do programowania (2/3) [1]

1 Atrybuty i metody klasowe

Tworzenie projektu zawierającego aplet w środowisku NetBeans. lab1. Dr inż. Zofia Kruczkiewicz Programowanie aplikacji internetowych

Aplikacja wielowątkowa prosty komunikator

Wielowątkowość. Programowanie w środowisku rozproszonym. Wykład 1.

Java: kilka brakujących szczegółów i uniwersalna nadklasa Object

Rysowanie prostych obiektów graficznych przy użyciu biblioteki AWT (Abstract Window Toolkit)

Współbieżność w środowisku Java

Java niezbędnik programisty spotkanie nr 12. Graficzny interfejs użytkownika

Programowanie obiektowe. Literatura: Autor: dr inŝ. Zofia Kruczkiewicz

Języki i Techniki Programowania II. Wykład 13. TRaX, Applety, Java Security

Język Java. Rysowanie GUI Określanie wyglądu komponentów

Wybrane działy Informatyki Stosowanej

Aplikacje w Javie- wykład 11 Wątki-podstawy

Interfejsy w Java. Przetwarzanie równoległe. Wątki.

Instytut Sterowania i Systemów Informatycznych Uniwersytet Zielonogórski. Zaawansowane Systemy Decyzyjne. Laboratorium

Kurs programowania. Wykład 8. Wojciech Macyna

Java. Wykład. Dariusz Wardowski, Katedra Analizy Nieliniowej, WMiI UŁ

Bezpieczne uruchamianie apletów wg

Praktyczny kurs Java. Wydanie II

Wykład 12: Obsługa Zdarzeń

Podstawowe informacje o apletach

Kurs programowania. Wykład 8. Wojciech Macyna. 10 maj 2017

Programowanie obiektowe

Wybrane działy Informatyki Stosowanej

JAVA W SUPER EXPRESOWEJ PIGUŁCE

Programowanie obiektowe

Visual Studio instalacja

Aplikacja wielow tkowa prosty komunikator

Wykorzystywanie parsera DOM w programach Java i PL/SQL

LABORATORIUM TEMAT ĆWICZENIA: Wykorzystanie języka programowania JAVA do tworzenia multimedialnych i interaktywnych stron usługi WWW

Współbieżność i równoległość w środowiskach obiektowych. Krzysztof Banaś Obliczenia równoległe 1

Wstęp do programowania w języku Java

II Tworzenie klasy Prostokąt dziedziczącej z klasy wątku

RESTful Android. Na co zwrócić uwagę przy tworzeniu aplikacji klienckich REST na Androidzie

Java: otwórz okienko. Programowanie w językach wysokiego poziomu. mgr inż. Anna Wawszczak

Tworzenie elementów graficznych

Materiał pomocniczy do kursu Podstawy programowania Autor: Grzegorz Góralski ggoralski.com

Wykład 4_1. Interaktywne aplety obsługa zdarzeń, uruchamianie apletu przez przeglądarkę lub maszynę wirtualną Javy.

Grafika i komunikacja człowiek komputer Laboratorium. Część 3: Tekst, czcionki, kolory

Programowanie w Internecie. Java

Wywoływanie metod zdalnych

Applety Java. Applety są przykładem kodu Java wykonywanego po stronie klienta, ale bez ujawnionej (jak w przypadku skryptu) wersji źródłowej

Systemy Rozproszone - Ćwiczenie 6

Java. język programowania obiektowego. Programowanie w językach wysokiego poziomu. mgr inż. Anna Wawszczak

INSTRUKCJA DO ĆWICZENIA 13. Animacja wielowątkowa w aplikacjach JME. Gra logistyczna.

6.1 Pojęcie wątku programu 6.2 Klasy Timer, TimerTask 6.3 Klasa Thread 6.4 Synchronizacja pracy wątków 6.5 Grupowanie wątków

Programowanie w Sieci Internet. Python: Wątki. Kraków, 12 grudnia 2014 r. mgr Piotr Rytko Wydział Matematyki i Informatyki

Aplikacje w środowisku Java

Instrukcja implementacji sterownika wirtualnego portu szeregowego dla systemu Android. Opracowanie: Elzab Soft sp. z o.o.

Języki i metody programowania Java Lab1 Zofia Kruczkiewicz

Tworzenie i wykorzystanie usług

Podstawy tworzenia aplikacji z wykorzystaniem języka Java ME ćwiczenia 3

Zdalne wywołanie metod - koncepcja. Oprogramowanie systemów równoległych i rozproszonych Wykład 7. Rodzaje obiektów. Odniesienie do obiektu

Oprogramowanie systemów równoległych i rozproszonych Wykład 7

Komputerowe systemy na rynkach finansowych. wykład 5. MQL4 - funkcje operujące na obiektach wykresu

Zaawansowane aplikacje WWW - laboratorium

Wprowadzenie do projektu QualitySpy

akademia androida Service, BroadcastReceiver, ContentProvider część IV

Pętle while, for, do while, instrukcje break, continue, switch 1. Pętle

Grafika i komunikacja człowiek komputer Laboratorium. Część 1: Wstęp do grafiki

- Narzędzie Windows Forms. - Przykładowe aplikacje. Wyższa Metody Szkoła programowania Techniczno Ekonomiczna 1 w Świdnicy

Wykład 2 Wybrane konstrukcje obiektowych języków programowania (1)

1 Wątki 1. 2 Tworzenie wątków 1. 3 Synchronizacja 3. 4 Dodatki 3. 5 Algorytmy sortowania 4

Programowanie telefonów z Windows Phone 7, cz. 3

Aplikacje WWW - laboratorium

Podstawy tworzenia aplikacji z wykorzystaniem języka Java ME ćwiczenia 2

Wywoływanie metod zdalnych

Generatory. Michał R. Przybyłek

Aplikacje WWW - laboratorium

Obliczenia równoległe i rozproszone w JAVIE. Michał Kozłowski 30 listopada 2003

Wstęp do programowania w języku Java

Aplikacje RMI

Laboratorium 1. Wzorce oprogramowania lab1, Zofia Kruczkiewicz

Laboratorium 03: Podstawowe konstrukcje w języku Java [2h]

SWING c.d. przydatne narzędzia: JFileChooser, JOptionPane. drag'n drop, menu kontekstowe.

Aplikacje RMI Lab4

Java Foundation Clases. Tworzenie graficznych interfejsów użytkownika (GUI) w Javie

Aplikacje internetowe i rozproszone - laboratorium

Programowanie w JAVA Lab. 5 - Wątki. 1. Wykorzystując metodę Monte Carlo narysować wykres funkcji oraz obliczyć całkę: 7 x ) xy, 8,8

Wstęp do programowania w języku Java

Transkrypt:

Wykład 11: Programowanie Apletów

Aplety Aplikacja uruchamiana jako część dokumentu HTML: dostępna na serwerze transportowana przez Internet instalowana i uruchamiana na przeglądarce Po instalacji u klienta, aplet ma ograniczony dostęp do jego zasobów.

Prosty Aplet Aplety komunikują się z użytkownikiem przez interfejs graficzny (tutaj AWT), nie klasy wejścia/wyjścia: import java.awt.*; Każdy aplet jest pod-klasą klasy Applet: import java.applet.*; public class SimpleApplet extends Applet {

Prosty Aplet Ciąg Dalszy Aplet musi przesłonić metodę paint, która wywołuje się za każdym wyświetleniem apleta na ekranie. Parametr opisuje graficzne środowisko apleta: public void paint(graphics g) { Element klasy Graphics, wyświetla łańcuch na danych współrzędnych: g.drawstring("a Simple Applet", 20, 20);

Wykonanie Apleta Ta sama metoda kompilacji aplikacji i apletów. Inne wykonanie (aplet nie posiada metody main): przez otwarcie pliku HTML w przeglądarce: <applet code= SimpleApplet width=200 height=60> </applet> przez program appletviewer

Aplety i Zdarzenia Aplet jest sterowany zdarzeniami: dostarcza metod obsługi różnych zdarzeń AWT informuje aplet o zajściu zdarzenia, metoda wywołuje się, kontrola wraca do AWT nowy wątek dla obsługi większych zadań Użytkownik komunikuje się a apletem, nie na odwrót. Aplet nie żąda wprowadzenia danych przez użytkownika, ale reaguje na zdarzenia generowane przez niego.

Metody Klasy Applet Istnieją domyślne implementacje, ale większość apletów dostarcza własnych implementacji: init() - wywołana raz na początku działania apletu start() - wywołana po init() i za każdym razem gdy dokument HTML jest ponownie wyświetlany Na przykład opuszczenie i powrót do strony WWW.

Metody Klasy Applet Ciąg Dalszy paint() - wywołana za każdy razem gdy zawartość apletu ma być ponownie wyświetlana, np: okno apletu zostaje odsłonięte okno jest przywracane po minimalizacji Pobiera parametr typu Graphics graficzne środowisko apletu. update() - wywołana gdy aplet żąda ponownego wyświetlenia części swojego okna. Domyślnie rysuje tło a potem wywołuje paint().

Zwolnienie wszystkich zasobów używanych, przedtem zawsze wykonuje się stop(). Metody Klasy Applet Ciąg Dalszy stop() - wywołana za każdy razem gdy przeglądarka opuszcza stronę. Na przykład zawieszenie wykonania wątków które nie są potrzebne gdy aplet nie jest wyświetlany. Wznowienie odbywa się przez start(). destroy() - wywołana gdy aplet jest ostatecznie usuwany z pamięci.

Szkielet Apletu import java.awt.*; import java.applet.*; /* <applet code="appletskel" width=300 height=100> </applet> */ public class AppletSkel extends Applet { public void init() { public void start() { public void stop() { public void destroy() { public void paint(graphics g) { public void update(graphics g) {

Metody Wyświetlania Apletów wyświetlanie danego łańcucha na danych współrzędnych w aplecie: void drawstring(string message, int x, int y) ustalenie kolorów tła i czcionki void setbackground(color newcolor) void setforeground(color newcolor) dostępne kolory Color.black Color.blue Color.cyan Color.green Color.gray Color.white Color.red Color.magenta Color.pink Color.orange Color.yellow

Aplet z Tłem i Wyświetleniem import java.awt.*; import java.applet.*; /* <applet code="sample" width=300 height=50> </applet> */ public class Sample extends Applet{ String msg; public void init() { setbackground(color.cyan); setforeground(color.red); msg = "Inside init( ) --";

Aplet z Tłem i Wyświetleniem public void start() { msg += " Inside start( ) --"; public void paint(graphics g) { msg += " Inside paint( )."; g.drawstring(msg, 10, 30);

Uaktualnianie Apletu Kiedy aplet potrzebuje uaktualnić zawartość swojego okna, wywołuje metodę repaint(): void repaint() - ponownie wyświetla całe okno void repaint(int left, int top, int width, int height) - wyświetla część okna o danych współrzędnych repaint() wywołuje update(), który wywołuje paint().

Terminowe Uaktualnianie Apletu Gdy system jest zajęty, update() może nie wykonać się od razu. Dwie wersje przyśpieszone : void repaint(long maxdelay) void repaint(long maxdelay, int left, int top, int width, int height) Określają kiedy najpóźniej update() może zostać wykonany, w milisekundach.

Aplet z Przesuwanym Tekstem Aplet z tekstem przesuwanym poziomo, od prawej do lewej. import java.awt.*; import java.applet.*; /* <applet code="simplebanner" width=300 height=50> </applet> */ Przesuwanie tekstu realizowane jest przez osobny wątek tworzony przez aplet w czasie inicjalizacji.

Aplet z Przesuwanym Tekstem Dziedziczy po Applet i implementuje Runnable: public class SimpleBanner extends Applet implements Runnable { String msg = " A Simple Moving Banner."; Thread t = null; int state; boolean stopflag; Ustalenie kolorów: public void init() { setbackground(color.cyan); setforeground(color.red);

Aplet z Przesuwanym Tekstem Wystartowanie wątku: public void start() { t = new Thread(this); stopflag = false; t.start(); start() jest metodą klasy Thread, która powoduje wywołanie metody run().

public void run() { char ch; for( ; ; ) { try { repaint(); Thread.sleep(250); ch = msg.charat(0); msg = msg.substring(1, msg.length()); msg += ch; if(stopflag) break; catch(interruptedexception e) { Aplet z Przesuwanym Tekstem Metoda wątku do wyświetlenia przesuwanego tekstu. Przesuwa znaki w wiadomości z początku na koniec:

Aplet z Przesuwanym Tekstem Zatrzymanie wątku, np. po zasłonięciu okna. Ponowne wyświetlenie przez start(). public void stop() { stopflag = true; t = null; Wyświetlenie wiadomości przy rysowaniu apletu: public void paint(graphics g) { g.drawstring(msg, 50, 30);

Okno Stanu Oprócz wyświetlania w oknie głównym, aplet może też rysować do okna stanu: informacja co się dzieje w aplecie dostarczenie opcji wykonawczych informacja o błędach Do wyświetlania w oknie stanu służy metoda: void showstatus(string msg)

Wyświetlanie Stanu import java.awt.*; import java.applet.*; /* <applet code="statuswindow" width=300 height=50> </applet> */ public class StatusWindow extends Applet{ public void init() { setbackground(color.cyan); public void paint(graphics g) { g.drawstring("applet window.", 10, 20); showstatus("status window.");

Znacznik APPLET Używany do uruchomienia apletu z dokumentu HTML jak też z wyświetlacza apletów. Gdy jest więcej znaczników APPLET: wyświetlacz uruchomi każdy aplet w osobnym oknie przeglądarka internetowa uruchomi wszystkie na jednej stronie

Format Znacznika APPLET <APPLET [CODEBASE = url] CODE = appletfile [ALT = text] [NAME = applet name] WIDTH = pixels HEIGHT = pixels [ALIGN = alignment] [VSPACE = pixels] [HSPACE = pixels] > [<PARAM NAME=name VALUE=value>] [<PARAM NAME=name VALUE=value>]... [HTML wyświetlany gdy nie ma Javy] </APPLET>

VSPACE i HSPACE obszar w pikselach powyżej/poniżej apletu i po obu stronach Atrybuty Znacznika APPLET CODEBASE URL do katalogu gdzie znajdują się pliki wykonawcze apleta CODE plik wykonawczy apleta ALT tekst wyświetlony przez przeglądarkę gdy ta rozumie aplet, ale nie może obecnie go wykonać NAME nazwa apletu do komunikacji z innymi, getapplet() zwraca aplet o danej nazwie WIDTH i HEIGHT szerokość i wysokość obszaru gdzie aplet będzie wyświetlony ALIGN sposób wyrównania apletu: LEFT, RIGHT...

Przekazywanie Parametrów do Apleta Przez znacznik PARAM w APPLET. Metoda getparameter() zwraca wartość parametru o danej nazwie jako obiekt String.

Aplet z Parametrami, Przykład import java.awt.*; import java.applet.*; /* <applet code="paramdemo" width=300 height=80> <param name=fontname value=courier> <param name=fontsize value=14> <param name=leading value=2> <param name=accountenabled value=true> </applet> */ public class ParamDemo extends Applet{ String fontname; int fontsize; float leading; boolean active;

Aplet z Parametrami, Przykład public void start() { String param; Jeśli parametr nie istnieje, getparameter() zwraca wartość null. fontname = getparameter("fontname"); if(fontname == null) fontname = "Not Found";

Aplet z Parametrami, Przykład Aplet nie powinien pozostawić żadnego wyjątku (np. błąd konwersji na typ numeryczny) bez obsługi: param = getparameter("fontsize"); try { if(param!= null) // if not found fontsize = Integer.parseInt(param); else fontsize = 0; catch(numberformatexception e) { fontsize = -1;

Aplet z Parametrami, Przykład param = getparameter("leading"); try { if(param!= null) // if not found leading = Float.valueOf(param).floatValue(); else leading = 0; catch(numberformatexception e) { leading = -1; param = getparameter("accountenabled"); if(param!= null) active = Boolean.valueOf(param).booleanValue();

Aplet z Parametrami, Przykład public void paint(graphics g) { g.drawstring("font name: " + fontname,0,10); g.drawstring("font size: " + fontsize,0,26); g.drawstring("leading: " + leading,0,42); g.drawstring("account Active:"+active,0,58);

Przesuwany Tekst jako Parametr import java.awt.*; import java.applet.*; /* <applet code="parambanner" width=300 height=50> <param name=message value="java on the move!"> </applet> */ public class ParamBanner extends Applet implements Runnable { String msg; Thread t = null; int state; boolean stopflag;

Przesuwany Tekst jako Parametr public void init() { setbackground(color.cyan); setforeground(color.red); public void start() { msg = getparameter("message"); if(msg == null) msg = "Message not found."; msg = " " + msg; t = new Thread(this); stopflag = false; t.start();

Przesuwany Tekst jako Parametr public void run() { char ch; for( ; ; ) { try { repaint(); Thread.sleep(250); ch = msg.charat(0); msg = msg.substring(1, msg.length()); msg += ch; if(stopflag) break; catch(interruptedexception e) {

Przesuwany Tekst jako Parametr public void stop() { stopflag = true; t = null; public void paint(graphics g) { g.drawstring(msg, 50, 30);

Aplet i Adresy URL Dwie metody uzyskania adresów URL: getdocumentbase() - adres URL pliku HTML który wywołał dany aplet getcodebase() - adres URL katalogu gdzie znajduje się plik wykonawczy bieżącego apletu

Adresy URL, Przykład import java.awt.*; import java.applet.*; import java.net.*; /* <applet code="bases" width=300 height=50> </applet> */ public class Bases extends Applet{ public void paint(graphics g) { String msg; URL url = getcodebase(); msg = "Code base: " + url.tostring(); g.drawstring(msg, 10, 20); url = getdocumentbase(); msg = "Document base: " + url.tostring(); g.drawstring(msg, 10, 40);

AppletContext Interfejs który pozwala na uzyskanie informacji o środowisku wykonawczym apletu. Kontekst bieżącego apletu można uzyskać przez wywołanie metody (w klasie Applet): getappletcontext()

AppletContext Metody interfejsu AppletContext: Applet getapplet(string appletname) Zwraca aplet o danej nazwie, jeśli znajduje się w danym kontekście, w przeciwnym razie null. Enumeration getapplets() Zwraca wszystkie aplety w danym kontekście. void showdocument(url url) void showdocument(url url,string where) Wyświetla w oknie apletu dokument o danym URL. void showstatus(string string) Wyświetla dany łańcuch w oknie stanu.

AppletContext void showdocument(url url, String where) Dozwolone wartości where: _self pokaż w bieżącej ramce _parent pokaż w ramce rodzica _top pokaż w ramce najwyższego poziomu _blank pokaż w nowym oknie przeglądarki

Wyświetlenie Zawartości Dokumentu import java.awt.*; import java.applet.*; import java.net.*; /* <applet code="acdemo" width=300 height=50> </applet> */ public class ACDemo extends Applet { public void start() { AppletContext ac = getappletcontext(); URL url = getcodebase(); try { ac.showdocument(new URL(url+"Test.html")); catch(malformedurlexception e) { showstatus("url not found");