Tworzenie i obsługa graficznego interfejsu uŝytkownika



Podobne dokumenty
JAVA Materiały do laboratorium III wersja niezaawansowana Marcin Borkowski WSEiZ czerwiec 2006

Operatory. Składnia. Typy proste. Znaki specjalne

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

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

Kurs programowania. Wykład 4. Wojciech Macyna. 23 marca 2016

Programowanie graficznych interfejsów użytkownika

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

Java SE Laboratorium nr 5. Temat: Obsługa zdarzeń

Kontenery i komponenty graficzne

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

Języki i metody programowania Java Obsługa zdarzeń - przykłady

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

SWING. dr Jarosław Skaruz

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

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

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

Programowanie obiektowe

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

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

Java - interfejs graficzny

Podstawowe informacje o apletach

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

Multimedia JAVA. Historia

Programowanie Multimediów. Programowanie Multimediów JAVA. programowanie GUI. (AWT i Swing) [1]

Programowanie zdarzeniowe

JAVA. Strumienie wejścia i wyjścia. Pliki - zapis i odczyt

Graphic User Interfaces pakiet Swing

Podstawy Programowania

Programowanie obiektowe

Programowanie obiektowe zastosowanie języka Java SE

Przykładowe roz wiązanie:

Programowanie obiektowe

Wykład 11: Programowanie Apletów

Podstawy Języka Java

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

Informatyka I. Interfejs GUI wysokiego poziomu. Biblioteka Swing. Programowanie zdarzeniowe. Politechnika Warszawska Wydział Transportu 2018

Obsługa zdarzeń. Wykład 4

Wykład 12: Obsługa Zdarzeń

Programowanie obiektowe

setdefaultcloseoperation(jframe.exit_on_close);//obsługa zamykania aplikacji setvisible(true); } //wyświetlenie okna

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

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

Tworzenie elementów graficznych

Henryk Budzisz. materiały przygotowane w ramach projektu ZPORR nr POKL /08-00

Bezpieczne uruchamianie apletów wg

Java: interfejsy i klasy wewnętrzne

Aplikacja wielowątkowa prosty komunikator

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

Programowanie w Javie Wykład 6 Okienka w Javie (AWT)

Aplikacja wielow tkowa prosty komunikator

Rozdział 5 Aplety, grafika w Javie

JAVA W SUPER EXPRESOWEJ PIGUŁCE

Dokumentacja do API Javy.

Kurs programowania. Wykład 5. Wojciech Macyna. 31 marzec 2016

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

Programowanie aplikacji na urządzenia mobilne

Bartosz Jachnik - Kino

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

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

Programowanie zdarzeniowe

SWING ZAGADNIENIA: wprowadzenie, kontenery I komponenty, LayoutManager, komponenty tekstowe.

1 Atrybuty i metody klasowe

Informatyka i Ekonometria Programowanie komputerów Ćwiczenia Tworzenie aplikacji wykorzystaniem graficznego interfejsu użytkownika - Swing.

Zaawansowane programowanie obiektowe. Wykład 3 część 2

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

Marcin Luckner Warsaw University of Technology Faculty of Mathematics and Information Science

GUI - projektowanie interfejsów cz. II

Programowanie Obiektowe GUI

7 Pewne uzupełnienia Przepływ sterowania Układacze... 6

Klasy abstrakcyjne. Klasę abstrakcyjną tworzymy przy pomocy modyfikatora abstract

Kurs programowania. Wykład 1. Wojciech Macyna. 3 marca 2016

Wstęp - Prosta aplikacja internetowa w technologii Java EE 5. Programowanie komponentowe 1

Programowanie obiektowe

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

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

Instrukcja 10 Laboratorium 13 Testy akceptacyjne z wykorzystaniem narzędzia FitNesse

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

Programowanie komputerów Wykład 6: Aplety Java

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

Interfejsy. Programowanie obiektowe. Paweł Rogaliński Instytut Informatyki, Automatyki i Robotyki Politechniki Wrocławskiej

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

Wybieramy File->New->Project Wybieramy aplikację MFC->MFC Application jak na rysunku poniżej:

Aplikacje w środowisku Java

Java Platform Micro Edition

Marcin Luckner Warsaw University of Technology Faculty of Mathematics and Information Science

dziedziczenie - po nazwie klasy wystąpią słowa: extends nazwa_superklasy

Języki i metody programowania Java INF302W Wykład 2 (część 1)

Obsługa zdarzeń w JAVIE ((ActionListener,ItemListener,TableModelListener))

Java jako zdalny interfejs aplikacji Webowych aplety

JavaFX. Zaawansowane technologie Javy 2019

Pierwsza ramka. dr Anna Łazińska, WMiI UŁ Podstawy języka Java 1 / 10

Programowanie urządzeń mobilnych w systemie Android. Ćwiczenie 7 Wykorzystanie układu LinearLayout

Systemy operacyjne na platformach mobilnych

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

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

Język Java część 2 (przykładowa aplikacja)

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

Przypomnienie o klasach i obiektach

Tworzenie i wykorzystanie usług

Budowa aplikacji z graficznym interfejsem użytkownika - GUI (Graphic User Interface)

Transkrypt:

Tworzenie i obsługa graficznego interfejsu uŝytkownika Programowanie w środowisku rozproszonym. Wykład 3. Aplety aplikacje uruchamiane w środowisku przeglądarki - przykład import java.applet.applet; import java.awt.graphics; public class PierwszyAplet extends Applet public void paint(graphics g) g.drawstring("to jest pierwszy aplet",30,30); 2 1

Uruchamianie apletu <HTML> <HEAD> <TITLE>To jest tytuł strony </TITLE> </HEAD> <BODY> <APPLET CODE="PierwszyAplet.class WIDTH=150 HEIGHT=100> </APPLET> </BODY> </HTML> 3 Podstawowe metody apletu init - w chwili inicjalizacji start - wyświetlenie strony stop - minimalizacja strony destroy - usunięcie apletu z pamięci (poprzedzone realizacją metody stop) paint - gdy zachodzi potrzeba ponownego przerysowania powierzchni apletu 4 2

Komponenty AWT - struktura 5 Komponenty AWT 6 3

Tworzenie komponentów (na przykładzie przycisków i etykiet) import java.awt.*; import java.applet.applet; public class ObslugaZdarzen extends Applet Button p1 = new Button("Polecenie 1"); Button p2, p3; Label et1 = new Label("To jest pierwsza etykieta"); Label et2; 7... public void init() p2 = new Button("Polecenie 2"); p3 = new Button(); p3.setlabel("polecenie 3"); p3.setenabled(false); et2 = new Label(); et2.settext("to jest druga etykieta"); add(et1); add(et2); add(p1); add(p2); add(p3); 8 4

... 9 Obsługa zdarzeń Elementy uczestniczące w procesie obsługi zdarzeń: uŝytkownik programu - który wykonuje pewną akcję element interfejsu, którego dotyczyło zdarzenie (np. przycisk lub pole tekstowe) obiekt reprezentujący zdarzenie interfejs definiujący nagłówek metody obsługującej zdarzenie, klasa implementująca interfejs 10 5

Obsługa zdarzenia kliknięcie myszką na przycisku W interfejsie ActionListener zdefiniowany jest nagłówek metody: public void actionperformed(actionevent e) uruchamianej jako odpowiedź na zdarzenie polegające na kliknięciu na przycisku. 11 Obsługa kliknięcia przykład 1 import java.awt.*; import java.awt.event.*; import java.applet.applet; public class ObslugaZdarzen extends Applet Button p1 = new Button("Polecenie 1"); Button p2 = new Button("Polecenie 2"); Label etykieta = new Label("Zaden przycisk nie zostal wcisniety!!"); 12 6

... public void init() p1.addactionlistener(new Obsluga1()); p2.addactionlistener(new Obsluga2()); add(p1); add(p2); add(etykieta); class Obsluga1 implements ActionListener public void actionperformed(actionevent e) etykieta.settext("przycisk 1"); class Obsluga2 implements ActionListener public void actionperformed(actionevent e) etykieta.settext("przycisk 2"); 13... 14 7

Przykład 2 import java.awt.*; import java.awt.event.*; import java.applet.applet; public class ObslugaZdarzen extends Applet implements ActionListener Button p1 = new Button("Polecenie 1"); Button p2 = new Button("Polecenie 2"); Label etykieta = new Label("Zaden przycisk nie zostal wcisniety!!"); public void init() p1.addactionlistener(this); p2.addactionlistener(this); add(p1); add(p2); add(etykieta); 15... public void actionperformed(actionevent e) if (e.getsource() == p1) etykieta.settext("przycisk 1"); else etykieta.settext("przycisk 2"); 16 8

Interfejs FocusListener public void focusgained(focusevent e) public void focuslost(focusevent e) 17 Przykład 3 import java.awt.*; import java.awt.event.*; import java.applet.applet; public class Przyciski extends Applet Button p1 = new Button("Polecenie 1"); Button p2 = new Button("Polecenie 2"); Button p3 = new Button("Polecenie 3"); Label etykietaklik = new Label(); Label etykietaskupiony = new Label(); 18 9

... public void init() add(etykietaklik); add(etykietaskupiony); p1.addactionlistener(new Klikniecie()); p2.addactionlistener(new Klikniecie()); p3.addactionlistener(new Klikniecie()); p1.addfocuslistener(new Skupiony()); p2.addfocuslistener(new Skupiony()); p3.addfocuslistener(new Skupiony()); add(p1); add(p2); add(p3); 19... class Klikniecie implements ActionListener public void actionperformed(actionevent e) Button przycisk = (Button) e.getsource(); etykietaklik.settext("wcisnieto przycisk: " + przycisk.getlabel()); validate(); 20 10

... class Skupiony implements FocusListener public void focusgained(focusevent e) Button przycisk = (Button) e.getsource(); etykietaskupiony.settext("elementem skupionym jest: " + przycisk.getlabel()); validate(); public void focuslost(focusevent e) Button przycisk = (Button) e.getsource(); etykietaskupiony.settext("elementem skupionym nie jest: " + przycisk.getlabel()); validate(); 21 Rozmieszczenie elementów Layout Manager - klasa odpowiedzialna za rozmieszczenie elementów w oknie 22 11

FlowLayout Manager import java.awt.*; import java.applet.applet; public class Rozmieszczenie extends Applet public void init() setlayout(new FlowLayout()); add(new Button("Jeden")); add(new Button("Dwa")); add(new Button("Sto siedemdziesiat osiem")); 23 FlowLayout Manager Konstruktory public FlowLayout() public FlowLayout(int alignment) public FlowLayout(int alignment, int horizontalgap, int verticalgap) Uwagi: Dopuszczalne wartości dla parametru alignment to: FlowLayout.LEFT, FlowLayout.RIGHT, oraz FlowLayout.CENTER Domyślne wartości dla horizontalgap i verticalgap wynoszą 5 24 12

GridLayout Manager import java.awt.*; import java.applet.applet; public class Rozmieszczenie extends Applet public void init() setlayout(new GridLayout(2,2)); add(new Button("Jeden")); add(new Button("Dwa")); add(new Button("Sto siedemdziesiat osiem")); 25 GridLayout Manager Konstruktory public GridLayout(int rows, int columns) public GridLayout(int rows, int columns, int horizontalgap, int verticalgap) GridLayout(0,2) dwie kolumny, niesprecyzowana liczba wierszy 26 13

BorderLayout Manager import java.awt.*; import java.applet.applet; public class Rozmieszczenie extends Applet public void init() setlayout(new BorderLayout()); add("north",new Button("Jeden")); add("west",new Button("Dwa")); add("center",new Button("Trzy")); add("east",new Button("Cztery")); add("south",new Button("Piec")); 27 BorderLayout Manager Konstruktory: public BorderLayout() public BorderLayout(int horizontalgap, int verticalgap) 28 14

Łączenie paneli 29 Łączenie paneli import java.awt.*; import java.applet.applet; import java.awt.event.actionlistener; import java.awt.event.actionevent; public class LaczeniePaneli extends Applet implements ActionListener TextField poleimie, polenazwisko, poleulica, polemiasto, poletelefon; Button akceptacja, rezygnacja; TextArea oknoedycyjne; final static String OK = "Akceptacja"; final static String CANCEL = "Rezygnacja"; 30 15

Łączenie paneli public void init() setlayout(new BorderLayout()); Panel opisy = new Panel(); opisy.setlayout(new GridLayout(5,1)); opisy.add(new Label("Imie")); opisy.add(new Label("Nazwisko")); opisy.add(new Label("Ulica")); opisy.add(new Label("Miasto")); opisy.add(new Label("Telefon")); Panel edycja = new Panel(); edycja.setlayout(new GridLayout(5,1,0,10)); edycja.add(poleimie = new TextField(30)); edycja.add(polenazwisko = new TextField(30)); edycja.add(poleulica = new TextField(40)); edycja.add(polemiasto = new TextField(20)); edycja.add(poletelefon = new TextField(15)); 31 Łączenie paneli Panel przyciski = new Panel(); przyciski.setlayout(new FlowLayout(FlowLayout.CENTER,10,10)); akceptacja = new Button("Wyslij"); akceptacja.addactionlistener(this); akceptacja.setactioncommand(ok); przyciski.add(akceptacja); rezygnacja = new Button("Anuluj"); rezygnacja.addactionlistener(this); rezygnacja.setactioncommand(cancel); przyciski.add(rezygnacja); Panel komunikat = new Panel(); komunikat.setlayout(new BorderLayout()); komunikat.add("north",new Label("Adres klienta:")); oknoedycyjne = new TextArea(6,30); oknoedycyjne.seteditable(false); komunikat.add("center",oknoedycyjne); 32 16

Łączenie paneli Panel tytul = new Panel(); tytul.setlayout(new FlowLayout(FlowLayout.CENTER,15,15)); tytul.setforeground(color.red); tytul.setfont(new Font("TimesRoman",Font.BOLD,24)); tytul.add(new Label("SKLEP INTERNETOWY")); add("west",opisy); add("north",tytul); add("center",edycja); add("east",komunikat); add("south",przyciski); 33 Łączenie paneli public void actionperformed(actionevent e) String polecenie = e.getactioncommand(); String nl = "\n"; if (polecenie.equals(ok)) oknoedycyjne.settext(null); oknoedycyjne.append("dane klienta: \n\n"); oknoedycyjne.append(poleimie.gettext() + nl); oknoedycyjne.append(polenazwisko.gettext() + nl); oknoedycyjne.append(poleulica.gettext() + nl); oknoedycyjne.append(polemiasto.gettext() + nl); oknoedycyjne.append(poletelefon.gettext() + nl); 34 17

Łączenie paneli else poleimie.settext(null); polenazwisko.settext(null); poleulica.settext(null); polemiasto.settext(null); poletelefon.settext(null); oknoedycyjne.settext(null); 35 Obsługa wierszy edycyjnych Intrefejs TextListener: public void textvaluechanged(textevent e) interfejs KeyListener public void keytyped(keyevent e) public void keypressed(keyevent e) public void keyreleased(keyevent e) 36 18

Obsługa wierszy edycyjnych 37 Obsługa wierszy edycyjnych import java.awt.*; import java.applet.applet; import java.awt.event.actionlistener; import java.awt.event.actionevent; import java.awt.event.textlistener; import java.awt.event.textevent; import java.awt.event.keylistener; import java.awt.event.keyevent; public class WierszEdycyjny extends Applet implements ActionListener, TextListener,KeyListener Label info; TextField wiersz; final static String KASUJ_TEKST = "KasujTekst"; final static String KASUJ_INFO = "KasujInfo"; 38 19

Obsługa wierszy edycyjnych public void init() setlayout(new BorderLayout()); Panel wyswietlacz = new Panel(); wyswietlacz.setlayout(new GridLayout(2,1,15,15)); info = new Label(); wyswietlacz.add(info); wiersz = new TextField(20); wiersz.addkeylistener(this); wiersz.addtextlistener(this); wyswietlacz.add(wiersz); 39 Obsługa wierszy edycyjnych Panel przyciski = new Panel(); Button p; p = new Button(" Kasuj tekst "); p.addactionlistener(this); p.setactioncommand(kasuj_tekst); przyciski.add(p); p = new Button(" Kasuj info "); p.addactionlistener(this); p.setactioncommand(kasuj_info); przyciski.add(p); add("north",wyswietlacz); add("south",przyciski); 40 20

Obsługa wierszy edycyjnych public void textvaluechanged(textevent e) info.settext(info.gettext() + "change "); public void actionperformed(actionevent e) String polecenie = e.getactioncommand(); String nl = "\n"; if (polecenie.equals(kasuj_tekst)) wiersz.settext(""); if (polecenie.equals(kasuj_info)) info.settext(""); wiersz.requestfocus(); 41 Obsługa wierszy edycyjnych public void keytyped(keyevent e) info.settext(info.gettext() + "T "); public void keypressed(keyevent e) info.settext(info.gettext() + "P "); if (e.getkeychar() == KeyEvent.VK_SPACE) e.consume(); public void keyreleased(keyevent e) info.settext(info.gettext() + "R "); 42 21

Obsługa list interfejs ItemListener: public void itemstatechanged(itemevent e) 43 Obsługa list import java.awt.*; import java.applet.applet; import java.awt.event.actionlistener; import java.awt.event.actionevent; import java.awt.event.itemlistener; import java.awt.event.itemevent; public class Lista extends Applet implements ActionListener, ItemListener List lista; Label opis1 = new Label(); Label opis2 = new Label(); 44 22

Obsługa list public void init() lista = new List(8); lista.add("aaa"); lista.add("bbb"); lista.add("ccc"); lista.add("xxx",0); lista.remove(3); lista.remove("bbb"); lista.addactionlistener(this); lista.additemlistener(this); add(lista); add(opis1); add(opis2); 45 Obsługa list public void actionperformed(actionevent e) //dwukrotne klikniecie String polecenie = e.getactioncommand(); opis1.settext("dwukrotne klikniecie: " + polecenie + " " + lista.getselectedindex()); validate(); public void itemstatechanged(itemevent e) opis2.settext("klikniecie: " + lista.getselectedindex()); validate(); 46 23

Obsługa pól wyboru 47 Obsługa pól wyboru import java.awt.*; import java.applet.applet; import java.awt.event.itemlistener; import java.awt.event.itemevent; public class PolaWyboru extends Applet Checkbox wybor1, wybor2, wybor3, wybor4, wybor5, wybor6; CheckboxGroup grupa; Label opis1 = new Label(); Label opis2 = new Label(); ObslugaParametrow obsparam = new ObslugaParametrow(); ObslugaOpcji obsopcji = new ObslugaOpcji(); 48 24

Obsługa pól wyboru public void init() setlayout(new BorderLayout()); Panel opisy = new Panel(); opisy.setlayout(new GridLayout(2,0)); opisy.add(opis1); opisy.add(opis2); Panel parametry = new Panel(); parametry.setlayout(new GridLayout(0,1)); wybor1 = new Checkbox("Parametr 1"); wybor1.setname("par01"); wybor1.additemlistener(obsparam); 49 Obsługa pól wyboru wybor2 = new Checkbox(); wybor2.setlabel("parametr 2"); wybor2.setstate(true); wybor2.setname("par02"); wybor2.additemlistener(obsparam); wybor3 = new Checkbox("Parametr 3",true); wybor3.setname("par03"); wybor3.additemlistener(obsparam); parametry.add(wybor1); parametry.add(wybor2); parametry.add(wybor3); 50 25

Obsługa pól wyboru Panel opcje = new Panel(); opcje.setlayout(new GridLayout(0,1)); grupa = new CheckboxGroup(); wybor4 = new Checkbox("Opcja 1",false,grupa); wybor4.setname("opcja01"); wybor4.additemlistener(obsopcji); wybor5 = new Checkbox("Opcja 2",true,grupa); wybor5.setname("opcja02"); wybor5.additemlistener(obsopcji); wybor6 = new Checkbox("opcja 3",false,grupa); wybor6.setname("opcja03"); wybor6.additemlistener(obsopcji); opcje.add(wybor4); opcje.add(wybor5); opcje.add(wybor6); 51 Obsługa pól wyboru Panel polawyboru = new Panel(); polawyboru.setlayout( new FlowLayout(FlowLayout.CENTER,10,10)); polawyboru.add(parametry); polawyboru.add(opcje); add("north",opisy); add("center",polawyboru); 52 26

Obsługa pól wyboru class ObslugaParametrow implements ItemListener public void itemstatechanged(itemevent e) StringBuffer sb = new StringBuffer(); Checkbox wsk = (Checkbox) e.getsource(); if (wsk.getstate()) sb.append("włączono: " + wsk.getname() + ""); else sb.append("wyłączono: " + wsk.getname() + ""); 53 Obsługa pól wyboru sb.append("ustawione parametry to: ["); if (wybor1.getstate()) sb.append(wybor1.getname() + " "); if (wybor2.getstate()) sb.append(wybor2.getname() + " "); if (wybor3.getstate()) sb.append(wybor3.getname() + " "); sb.append("]"); opis1.settext(sb.tostring()); validate(); 54 27

Obsługa pól wyboru "); class ObslugaOpcji implements ItemListener public void itemstatechanged(itemevent e) StringBuffer sb = new StringBuffer(); Checkbox wsk = (Checkbox) e.getsource(); if (wsk.getstate()) sb.append("włączono: " + wsk.getname() + " opis2.settext(sb.tostring()); validate(); 55 Obsługa suwaków Interfejs AdjustmentListener: public void adjustmentvaluechanged(adjustmentevent e) 56 28

Obsługa suwaków import java.awt.*; import java.applet.applet; import java.awt.event.adjustmentlistener; import java.awt.event.adjustmentevent; import java.awt.event.actionlistener; import java.awt.event.actionevent; public class Pasek extends Applet Scrollbar suwak; Label opis1 = new Label(); Label opis2 = new Label(); ObslugaPrzyciskow obsprzyciskow = new ObslugaPrzyciskow(); 57 Obsługa suwaków public void init() setlayout(new BorderLayout()); Panel opisy = new Panel(); opisy.setlayout(new GridLayout(2,0)); opisy.add(opis1); opisy.add(opis2); suwak = new Scrollbar(Scrollbar.HORIZONTAL,0,10,0,100); suwak.addadjustmentlistener(new ObslugaSuwaka()); /* konstruktor - jeden z kilku!!! public Scrollbar(int orientation, int value,int visible, int minimum, int maximum) */ 58 29

Obsługa suwaków Panel przyciski = new Panel(); przyciski.setlayout(new FlowLayout(FlowLayout.CENTER)); Button p; p = new Button("Początek"); p.setactioncommand("pocz"); p.addactionlistener(obsprzyciskow); przyciski.add(p); p = new Button("Koniec"); p.setactioncommand("kon"); p.addactionlistener(obsprzyciskow); przyciski.add(p); add("north",opisy); add("center",suwak); add("south",przyciski); 59 Obsługa suwaków class ObslugaSuwaka implements AdjustmentListener public void adjustmentvaluechanged(adjustmentevent e) switch (e.getadjustmenttype()) case AdjustmentEvent.UNIT_INCREMENT: opis1.settext("zdarzenie: zwiększenie jednostkowe"); break; case AdjustmentEvent.UNIT_DECREMENT: opis1.settext("zdarzenie: zmniejszenie jednostkowe"); break; case AdjustmentEvent.BLOCK_INCREMENT: opis1.settext("zdarzenie: zwiększenie blokowe"); break; 60 30

Obsługa suwaków blokowe"); suwaka"); case AdjustmentEvent.BLOCK_DECREMENT: opis1.settext("zdarzenie: zmniejszenie break; case AdjustmentEvent.TRACK: opis1.settext("zdarzenie: przesunięcie break; default: opis1.settext("zdarzenie:????"); opis2.settext("wartość: " + e.getvalue()); validate(); 61 Obsługa suwaków class ObslugaPrzyciskow implements ActionListener public void actionperformed(actionevent e) String polecenie = e.getactioncommand(); if (polecenie.equals("pocz")) suwak.setvalue(0); opis1.settext("przycisk: Początek"); opis2.settext("wartość: " + suwak.getvalue()); if (polecenie.equals("kon")) suwak.setvalue(100); opis1.settext("przycisk: Koniec"); opis2.settext("wartość: " + suwak.getvalue()); 62 31