Click here to load reader

Programowanie GUI

  • View
    1.220

  • Download
    1

Embed Size (px)

Text of Programowanie GUI

Programowanie obiektowe

Programowanie graficznych interfejsw u ytkownikaPawe Rogaliski Instytut Informatyki, Automatyki i Robotyki Politechniki Wrocawskiej pawel.rogalinski pwr.wroc.pl

Programowanie graficznych interfejsw u ytkownika

Autor: Pawe Rogaliski Instytut Informatyki, Automatyki i Robotyki PWr

1 / 26

The Java Tutorialshttp://java.sun.com/docs/books/tutorial/ui/index.html

Programowanie graficznych interfejsw u ytkownika

Autor: Pawe Rogaliski Instytut Informatyki, Automatyki i Robotyki PWr

2 / 26

GUI graficzny interfejs u ytkownikaStandardowe pakiety java.awt (AWT) oraz javax.swing (Swing) zawieraj klasy definiujce wiele r norodnych komponentw wizualnej interakcji programu z u ytkownikiem (okna, przyciski, listy itp.). S one reprezentowane przez klasy wywodzce si z klasy java.awt.Component. Komponenty kontenerach s umieszczane w

specjalnych

komponentach innych

umo liwiajcych

przechowywanie

elementw GUI (komponentw oraz innych kontenerw)

Programowanie graficznych interfejsw u ytkownika

Autor: Pawe Rogaliski Instytut Informatyki, Automatyki i Robotyki PWr

3 / 26

Komponenty AWT a komponenty SwinguAWT (Abstract Windowing Toolkit) - zestaw klas definiujcych proste komponenty interakcji wizualnej. S to komponenty ci kie realizowane poprzez u ycie graficznych bibliotek GUI systemu operacyjnego: ubogie mo liwoci graficzne i interakcyjne, brak komponentw zaawansowanych (np. tabel) zale ny od platformy systemowej wygld komponentw,

Pakiet Swing (JFC Java Foundation Clases) - zestaw klas definiujcych wiele komponentw i kontenerw interakcji wizualnej o zaawansowanych waciwociach. S to w wikszoci komponenty lekkie, ktre: s rysowane za pomoc kodu Javy w obszarze jakiego komponentu ci kiego (zwykle kontenera najwy szego poziomu) moj wygld niezale ny od platformy systemowej, mog by przezroczyste, a zatem mog przybiera wizualnie dowolne ksztaty,Programowanie graficznych interfejsw u ytkownika Autor: Pawe Rogaliski Instytut Informatyki, Automatyki i Robotyki PWr

4 / 26

Komponenty AWT a komponenty SwinguComponent

AWT

< klasa abstrakcyjna > wsplne waciwoci wszystkich komponentw

Containerwsplne waciwoci wszystkich kontenerw

Terminalne komponenty AWT

kontenery AWT okna AWT

JComponent< klasa abstrakcyjna > wsplne waciwoci wszystkich lekkich komponentw Swingu

SWING

Okna Swingubdce kontenerami najwy szego poziomu

Lekkie komponenty Swingulekkie kontenery i okna wewntrzne

Programowanie graficznych interfejsw u ytkownika

Autor: Pawe Rogaliski Instytut Informatyki, Automatyki i Robotyki PWr

5 / 26

Komponenty i konteneryElementy GUI dziel si na komponenty (kontrolki, sterowniki) oraz kontenery, ktre s u ywane do przechowywania innych elementw. komponenty: przyciski (Button, JButton) ptna (Canvas) pola wyboru (Checkbox, JCheckbox) etykiety (Label, JLabel) paski przewijania (ScrollBar, JScrollBar) listy (List, JList) listy rozwjane ( Choice) polecenia menu ( MenuItem, JMenuItem) komponenty tekstowe (TextField ,TextArea, JTextField, JTextArea)Programowanie graficznych interfejsw u ytkownika Autor: Pawe Rogaliski Instytut Informatyki, Automatyki i Robotyki PWr

kontenery: kontenery (Container) okna (Window, JWindow) ramki (Frame, JFrame) okna dialogowe (Dialog, JDialog) dialogi plikowe (FileDialog, JFileChooser) panele (Panel, JPanel) okna przewijalne (ScrollPane, JScrollPane)

6 / 26

Waciwoci komponentw AWT i SwingWszystkie komponenty wywodz si z abstrakcyjnej klasy Component, ktra definiuje m.in. metody ustalajce waciwoci komponentw: getNNN() isNNN() setNNN(...) pobieranie waciwoci komponentu sprawdzanie waciwoci zerojedynkowych lub boolean ustalanie waciwoci komponentu

gdzie NNN jest nazw waciwoci.

Programowanie graficznych interfejsw u ytkownika

Autor: Pawe Rogaliski Instytut Informatyki, Automatyki i Robotyki PWr

7 / 26

Waciwoci komponentw AWT i SwingWa niejsze wsplne waciwoci komponentw: is.../setVisible is.../setEnabled get.../setName get.../setFont get.../setCursor getParent sprawdza/ustawia widoczno komponentu, sprawdza/ustawia dostpno komponentu, podaje/ustawia nazw komponentu, podaje/ustawia czcionk, podaje/ustawia kursor dla komponentu, podaje kontener zawierajcy komponent,

get.../setLocation podaje/ustawia poo enie grnego-lewego rogu, get.../setSize contains podaje/ustawia rozmiar w pikselach, sprawdza czy podany punkt zawiera si w polu komponentu.

Programowanie graficznych interfejsw u ytkownika

Autor: Pawe Rogaliski Instytut Informatyki, Automatyki i Robotyki PWr

8 / 26

KonteneryKontenery to komponenty, ktre mog zawiera inne komponenty (w tym inne kontenery. Podstawowe metody (oprcz odziedziczonych z klasy Component) to: add() dodawanie komponentu,

remove() usunicie komponentu, A ponadto: getCopmonentCount() zwraca liczb komponentw, getComponent(int n) zwraca odniesienie na n-ty komponent, getComponents() setLayout(...) zwraca tablic wszystkich komponentw, ustawia rozmieszczenie komponentw.

Programowanie graficznych interfejsw u ytkownika

Autor: Pawe Rogaliski Instytut Informatyki, Automatyki i Robotyki PWr

9 / 26

OknaOkna to kontenery najwy szego poziomu, za pomoc ktrych aplikacja komunikuje si z u ytkownikiem. Najwa niejsze komponenty, ktre tworz okna to: JFrame, JDialog, JWindow, JApplet, JInternalFrame. Gwne okno aplikacji jest obiektem klasy JFrame, np: JFrame okno = JFrame (Okno gwne); Ka de okno, mimo e samo jest kontenerem, zawiera kontenery wewntrzne.

Do manipulowania komponentami w oknie su y kontener contentPane. Dostp do tego kontenera umo liwia metoda getContentPane(), np: Container cp = okno.getContentPane(); Kolejne komponenty umieszcza si w kontenerze przy u yciu metody add(...).

Programowanie graficznych interfejsw u ytkownika

Autor: Pawe Rogaliski Instytut Informatyki, Automatyki i Robotyki PWr

10 / 26

Obiekt klasy JFrame przykadimport javax.swing.*; public class ProstaAplikacja1 extends JFrame { public ProstaAplikacja1() { super("Ramka 1"); setSize(250,50); setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); Obsuga zamykania okna setVisible(true); } public static void main(String []args) { new ProstaAplikacja1(); } } Wywietlenie ramki na ekranie Wywoania konstruktora klasy bazowej i przekazanie tytuu okna

Ustawienia rozmiaru okna ramki

Programowanie graficznych interfejsw u ytkownika

Autor: Pawe Rogaliski Instytut Informatyki, Automatyki i Robotyki PWr

11 / 26

Operacja zamknicia oknaRamka posiada przyciski Minimalizuj, Maksymalizuj oraz Zamknij zlokalizowane na pasku tytuu. W przypadku Javy domylne zamkniecie ramki nie powoduje zamknicia aplikacji. Aby to zmieni, nale y wywoa metod setDefaultCloseOperation() zawierajc jeden z czterech parametrw wywoania: EXIT_ON_CLOSE DISPOSE_ON_CLOSE zamyka aplikacje po zamkniciu ramki zamyka ramk, usuwa obiekt reprezentujcy ramk,

ale pozostawia pracujc aplikacje, DO_NOTHING_ON_CLOSE pozostawia ramk otwarta i kontynuuje prace aplikacji HIDE_ON_CLOSE zamyka ramk pozostawiajc pracujc aplikacje.

Programowanie graficznych interfejsw u ytkownika

Autor: Pawe Rogaliski Instytut Informatyki, Automatyki i Robotyki PWr

12 / 26

Umieszczanie komponentw w oknieimport java.awt.*; import javax.swing.*; public class ProstaAplikacja2 extends JFrame { public ProstaAplikacja2() { super("Ramka 2"); setSize(250,70); setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); JPanel p.add( p.add( p.add( p = new new new new JPanel(); JLabel("Etykieta") ); JButton("Przycisk") ); JTextField("Pole textowe"));

Container cp = getContentPane(); cp.add(p); setVisible(true); } public static void main(String []args) { new ProstaAplikacja2(); } }

Programowanie graficznych interfejsw u ytkownika

Autor: Pawe Rogaliski Instytut Informatyki, Automatyki i Robotyki PWr

13 / 26

Rozmieszczanie komponentw w kontenerzeZ ka dym kontenerem jest skojarzony tzw. rozmiary i poo enie komponentw. Zarzdca zarzdca rozkadu, ktry okrela rozkadu jest obiektem klasy

implementujcej interfejs LayoutManager. Ustalenie zarzdcy rozkadu dla kontenera odbywa si za pomoc metody setLayout(...) np.:

FlowLayout flow = new FlowLayot(); Frame f = new Frme(); f.setLayout(flow);

U ycie zarzdcy rozkadu pozwala unika koniecznoci oprogramowania zmian rozmiarw i poo enia komponentw przy zmianie rozmiarw kontenera.

Programowanie graficznych interfejsw u ytkownika

Autor: Pawe Rogaliski Instytut Informatyki, Automatyki i Robotyki PWr

14 / 26

Zarzdca rozkadu przykadyUstalenie rozkadu realizowane jest przez klasy implementujce interfejs LayoutManager (zarzdca rozkadu): FlowLayout komponenty uo one s wierszami (jak litery tekstu); rozmiary komponentw nie zmieniaj si. BorderLayout komponenty uo one s geograficznie: o North, South (komponenty zmieniaj wymiary w poziomie), o East, West (komponenty zmieniaj wymiary w pionie), o Center (komponent zmienia oba wymiary), GridLayout tablica n*m komponentw; wszystkie komponenty maj taki sam rozmiar zmieniajcy si wraz z kontenerem.

Programowanie graficznych interfejsw u ytkownika

Autor: Pawe Rogaliski Instytut Informatyki, Automatyki i Robotyki PWr

15 / 26

Zarzdca rozkadu przykady c.d.import java.awt.*; import javax.swing.*; public class ProstaAplikacja3 extends JFrame { public ProstaAplikacja3() { super("Ramka 2"); setSize(300,120); setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); JPanel p = new JPanel(); p.setLayout(new GridLayout(2, 3, 10, 10)); p.add( new JLabel("Etykieta 1") ); p.add( new JButton("Przycisk 1")

Search related