Programowanie graficznych interfejsów użytkownika



Podobne dokumenty
Programowanie graficznych interfejsów uŝytkownika

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

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

Java - interfejs graficzny

Programowanie zdarzeniowe

Kontenery i komponenty graficzne

Podstawy Języka Java

Tworzenie elementów graficznych

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

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

Programowanie obiektowe

Graphic User Interfaces pakiet Swing

SWING. dr Jarosław Skaruz

Programowanie zdarzeniowe

Java biblioteka Swing

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

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

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

Programowanie w języku Java WYKŁAD

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

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

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

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

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

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

Tworzenie i obsługa graficznego interfejsu uŝytkownika

Aplikacja wielowątkowa prosty komunikator

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

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

Aplikacje w Javie wykład 12 Programowanie GUI

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

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

Aplikacja wielow tkowa prosty komunikator

Obsługa zdarzeń. Wykład 4

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

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

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

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

Programowanie w środowisku graficznym- wykład 9 Programowanie GUI cz1

Podstawowe informacje o apletach

GUI - projektowanie interfejsów cz. II

WYKONANIE APLIKACJI OKIENKOWEJ OBLICZAJĄCEJ SUMĘ DWÓCH LICZB W ŚRODOWISKU PROGRAMISTYCZNYM. NetBeans. Wykonał: Jacek Ventzke informatyka sem.

LABORATORIUM 7 Cel: 1_1

Interfejs graczny w Javie.

Programowanie zdarzeniowe

Podstawy Swing. Tomasz Borzyszkowski

Iteracyjno-rozwojowy cykl oprogramowania 4

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

PROGRAMOWANIE APLIKACJI MULTIMEDIALNYCH

Programowanie Obiektowe GUI

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

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

Połączenia między bazami danych i programem w języku Java część 2

Multimedia JAVA. Historia

Dodanie nowej formy do projektu polega na:

Programowanie obiektowe

POLIMORFIZM, INTERFEJSY, PROGRAMOWANIE ZDARZENIOWE

Wykład 3: Projektowanie graficznych interfejsów użytkownika w Java

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

Wykład 12: Obsługa Zdarzeń

Architektura interfejsu użytkownika

Scenariusz Lekcji. Część organizacyjna:

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

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

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

Przykładowe roz wiązanie:

Java Podstawy. Michał Bereta

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

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

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

PWŚG Ćwiczenia 13. Ukończoną pracę należy przesłać na adres lub

SWING ZAGADNIENIA: wprowadzenie, kontenery i komponenty, LayoutManager, komponenty tekstowe. inne przydatne komponenty.

Ćwiczenia 9 - Swing - część 1

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

Polimorfizm, metody wirtualne i klasy abstrakcyjne

Wykład 4_2 część druga. Iteracyjno-rozwojowy cykl oprogramowania 4

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

Dokumentacja do API Javy.

Aplikacje w środowisku Java

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

Aplikacje w Javie wykład 12 Programowanie GUI

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

JavaFX. Zaawansowane technologie Javy 2019

Instrukcja 4 Laboratorium z Podstaw Inżynierii Oprogramowania. Warstwa klienta: Interfejs graficzny użytkownika

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

Wykład 4 Delegat (delegate), właściwości indeksowane, zdarzenie (event) Zofia Kruczkiewicz

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

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

Bezpieczne uruchamianie apletów wg

Programowanie w języku JAVA. Wykład IV Swing - GUI

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

Programowanie aplikacji na urządzenia mobilne

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

Projektowanie aplikacji internetowych laboratorium

1. Czynności przygotowujące aplikację działającą na platformie Java SE Biblioteka5 (należy ją pobrać z załącznika z p.1)

UML a kod w C++ i Javie. Przypadki użycia. Diagramy klas. Klasy użytkowników i wykorzystywane funkcje. Związki pomiędzy przypadkami.

Programowanie obiektowe

DOSTĘP DO METOD I ZMIENNYCH. Dostęp do zmiennych (na podstawie:l.lemay,r.cadenhead,java 2 dla każdego, Helion 2001)

Swing ćwiczenia 2 opis

Podstawy Języka Java

Transkrypt:

Programowanie obiektowe Programowanie graficznych interfejsów użytkownika Paweł Rogaliński Instytut Informatyki, Automatyki i Robotyki Politechniki Wrocławskiej pawel.rogalinski pwr.wroc.pl Programowanie graficznych interfejsów użytkownika Autor: Paweł Rogaliński Instytut Informatyki, Automatyki i Robotyki PWr 1 / 26

The Java Tutorials http://java.sun.com/docs/books/tutorial/ui/index.html Programowanie graficznych interfejsów użytkownika Autor: Paweł Rogaliński Instytut Informatyki, Automatyki i Robotyki PWr 2 / 26

GUI graficzny interfejs użytkownika Standardowe pakiety java.awt (AWT) oraz javax.swing (Swing) zawierają klasy definiujące wiele różnorodnych komponentów wizualnej interakcji programu z użytkownikiem (okna, przyciski, listy itp.). Są one reprezentowane przez klasy wywodzące się z klasy java.awt.component. Komponenty są umieszczane w kontenerach specjalnych komponentach umożliwiających przechowywanie innych elementów GUI (komponentów oraz innych kontenerów) Programowanie graficznych interfejsów użytkownika Autor: Paweł Rogaliński Instytut Informatyki, Automatyki i Robotyki PWr 3 / 26

Komponenty AWT a komponenty Swingu AWT (Abstract Windowing Toolkit) - zestaw klas definiujących proste komponenty interakcji wizualnej. Są to komponenty ciężkie realizowane poprzez użycie graficznych bibliotek GUI systemu operacyjnego: ubogie możliwości graficzne i interakcyjne, brak komponentów zaawansowanych (np. tabel) zależny od platformy systemowej wygląd komponentów, Pakiet Swing (JFC Java Foundation Clases) - zestaw klas definiujących wiele komponentów i kontenerów interakcji wizualnej o zaawansowanych właściwościach. Są to w większości komponenty lekkie, które: są rysowane za pomocą kodu Javy w obszarze jakiegoś komponentu ciężkiego (zwykle kontenera najwyższego poziomu) moją wygląd niezależny od platformy systemowej, mogą być przezroczyste, a zatem mogą przybierać wizualnie dowolne kształty, Programowanie graficznych interfejsów użytkownika Autor: Paweł Rogaliński Instytut Informatyki, Automatyki i Robotyki PWr 4 / 26

Komponenty AWT a komponenty Swingu AWT Component < klasa abstrakcyjna > wspólne właściwości wszystkich komponentów Container wspólne właściwości wszystkich kontenerów Terminalne komponenty AWT kontenery AWT okna AWT JComponent < klasa abstrakcyjna > wspólne właściwości wszystkich lekkich komponentów Swingu SWING Okna Swingu będące kontenerami najwyższego poziomu Lekkie komponenty Swingu lekkie kontenery i okna wewnętrzne Programowanie graficznych interfejsów użytkownika Autor: Paweł Rogaliński Instytut Informatyki, Automatyki i Robotyki PWr 5 / 26

Komponenty i kontenery Elementy GUI dzielą się na komponenty (kontrolki, sterowniki) oraz kontenery, które są używane do przechowywania innych elementów. komponenty: przyciski (Button, JButton) płótna (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) kontenery: kontenery (Container) okna (Window, JWindow) ramki (Frame, JFrame) okna dialogowe (Dialog, JDialog) dialogi plikowe (FileDialog, JFileChooser) panele (Panel, JPanel) okna przewijalne (ScrollPane, JScrollPane) Programowanie graficznych interfejsów użytkownika Autor: Paweł Rogaliński Instytut Informatyki, Automatyki i Robotyki PWr 6 / 26

Właściwości komponentów AWT i Swing Wszystkie komponenty wywodzą się z abstrakcyjnej klasy Component, która definiuje m.in. metody ustalające właściwości komponentów: getnnn() pobieranie właściwości komponentu isnnn() sprawdzanie właściwości zerojedynkowych lub boolean setnnn(...) ustalanie właściwości komponentu gdzie NNN jest nazwą właściwości. Programowanie graficznych interfejsów użytkownika Autor: Paweł Rogaliński Instytut Informatyki, Automatyki i Robotyki PWr 7 / 26

Właściwości komponentów AWT i Swing Ważniejsze wspólne właściwości komponentów: is.../setvisible sprawdza/ustawia widoczność komponentu, is.../setenabled sprawdza/ustawia dostępność komponentu, get.../setname podaje/ustawia nazwę komponentu, get.../setfont podaje/ustawia czcionkę, get.../setcursor podaje/ustawia kursor dla komponentu, getparent podaje kontener zawierający komponent, get.../setlocation podaje/ustawia położenie górnego-lewego rogu, get.../setsize podaje/ustawia rozmiar w pikselach, contains sprawdza czy podany punkt zawiera się w polu komponentu. Programowanie graficznych interfejsów użytkownika Autor: Paweł Rogaliński Instytut Informatyki, Automatyki i Robotyki PWr 8 / 26

Kontenery Kontenery to komponenty, które mogą zawierać inne komponenty (w tym inne kontenery. Podstawowe metody (oprócz odziedziczonych z klasy Component) to: add(<nazwa komponentu>) dodawanie komponentu, remove(<nazwa komponentu>) usunięcie komponentu, A ponadto: getcopmonentcount() zwraca liczbę komponentów, getcomponent(int n) zwraca odniesienie na n-ty komponent, getcomponents() zwraca tablicę wszystkich komponentów, setlayout(...) ustawia rozmieszczenie komponentów. Programowanie graficznych interfejsów użytkownika Autor: Paweł Rogaliński Instytut Informatyki, Automatyki i Robotyki PWr 9 / 26

Okna Okna to kontenery najwyższego poziomu, za pomocą których aplikacja komunikuje się z użytkownikiem. Najważniejsze komponenty, które tworzą okna to: JFrame, JDialog, JWindow, JApplet, JInternalFrame. Główne okno aplikacji jest obiektem klasy JFrame, np: JFrame okno = JFrame ( Okno główne ); Każde okno, mimo że samo jest kontenerem, zawiera kontenery wewnętrzne. Do manipulowania komponentami w oknie służy kontener contentpane. Dostęp 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 interfejsów użytkownika Autor: Paweł Rogaliński Instytut Informatyki, Automatyki i Robotyki PWr10 / 26

Obiekt klasy JFrame przykład import javax.swing.*; public class ProstaAplikacja1 extends JFrame { public ProstaAplikacja1() { super("ramka 1"); setsize(250,50); setdefaultcloseoperation(jframe.exit_on_close); setvisible(true); public static void main(string []args) { new ProstaAplikacja1(); Wywołania konstruktora klasy bazowej i przekazanie tytułu okna Ustawienia rozmiaru okna ramki Obsługa zamykania okna Wyświetlenie ramki na ekranie Programowanie graficznych interfejsów użytkownika Autor: Paweł Rogaliński Instytut Informatyki, Automatyki i Robotyki PWr11 / 26

Operacja zamknięcia okna Ramka posiada przyciski Minimalizuj, Maksymalizuj oraz Zamknij zlokalizowane na pasku tytułu. W przypadku Javy domyślne zamkniecie ramki nie powoduje zamknięcia aplikacji. Aby to zmienić, należy wywołać metodę setdefaultcloseoperation() zawierającą jeden z czterech parametrów wywołania: EXIT_ON_CLOSE zamyka aplikacje po zamknięciu ramki DISPOSE_ON_CLOSE zamyka ramkę, usuwa obiekt reprezentujący ramkę, ale pozostawia pracującą aplikacje, DO_NOTHING_ON_CLOSE pozostawia ramkę otwarta i kontynuuje prace aplikacji HIDE_ON_CLOSE zamyka ramkę pozostawiając pracującą aplikacje. Programowanie graficznych interfejsów użytkownika Autor: Paweł Rogaliński Instytut Informatyki, Automatyki i Robotyki PWr12 / 26

Umieszczanie komponentów w oknie import 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 = new JPanel(); p.add( new JLabel("Etykieta") ); p.add( new JButton("Przycisk") ); p.add( new JTextField("Pole textowe")); Container cp = getcontentpane(); cp.add(p); setvisible(true); public static void main(string []args) { new ProstaAplikacja2(); Programowanie graficznych interfejsów użytkownika Autor: Paweł Rogaliński Instytut Informatyki, Automatyki i Robotyki PWr13 / 26

Rozmieszczanie komponentów w kontenerze Z każdym kontenerem jest skojarzony tzw. zarządca rozkładu, który określa rozmiary i położenie komponentów. Zarządca rozkładu jest obiektem klasy implementującej interfejs LayoutManager. Ustalenie zarządcy rozkładu dla kontenera odbywa się za pomocą metody setlayout(...) np.: FlowLayout flow = new FlowLayot(); Frame f = new Frme(); f.setlayout(flow); Użycie zarządcy rozkładu pozwala unikać konieczności oprogramowania zmian rozmiarów i położenia komponentów przy zmianie rozmiarów kontenera. Programowanie graficznych interfejsów użytkownika Autor: Paweł Rogaliński Instytut Informatyki, Automatyki i Robotyki PWr14 / 26

Zarządca rozkładu przykłady Ustalenie rozkładu realizowane jest przez klasy implementujące interfejs LayoutManager (zarządca rozkładu): FlowLayout komponenty ułożone są wierszami (jak litery tekstu); rozmiary komponentów nie zmieniają się. BorderLayout komponenty ułoż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 komponentów; wszystkie komponenty mają taki sam rozmiar zmieniający się wraz z kontenerem. Programowanie graficznych interfejsów użytkownika Autor: Paweł Rogaliński Instytut Informatyki, Automatyki i Robotyki PWr15 / 26

Zarządca rozkładu przykłady 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") ); p.add( new JTextField("Pole textowe 1")); p.add( new JLabel("Etykieta 2") ); p.add( new JButton("Przycisk 2") ); p.add( new JTextField("Pole textowe 2")); Dodawanie zarządcy rozmieszczenia w postaci szachownicy 2 x 3. Dodawanie pierwszego rzędu komponentów Dodawanie drugiego rzędu komponentów Container cp = getcontentpane(); cp.add(p); setvisible(true); public static void main(string []args) { new ProstaAplikacja3(); Programowanie graficznych interfejsów użytkownika Autor: Paweł Rogaliński Instytut Informatyki, Automatyki i Robotyki PWr16 / 26

Zdarzenia Graficzny interfejs użytkownika oprócz samego wyświetlania komponentów powinien reagować na zdarzenia pochodzące od użytkownika. Źródłami i słuchaczami zdarzeń są obiekty: zdarzenie (event) - obiekt "niosący" informację o stanie źródła, źródło (source) - obiekt, który generuje zdarzenia, słuchacz (listener) -obiekt powiadamiany o wystąpieniu zdarzenia. Większość zdarzeń jest generowana przez: mysz, klawiaturę, elementy interfejsu graficznego. Obsługa zdarzeń jest zawarta w pakiecie java.awt.event. Programowanie graficznych interfejsów użytkownika Autor: Paweł Rogaliński Instytut Informatyki, Automatyki i Robotyki PWr17 / 26

Hierarcha zdarzeń Object EventObject AWTEvent ActionEvent AdjustmentEven ItemEvent TextEvent ComponentEvent ContainerEvent WindowEvent FocusEvent InputEvent MouseEvent KeyEvent Programowanie graficznych interfejsów użytkownika Autor: Paweł Rogaliński Instytut Informatyki, Automatyki i Robotyki PWr18 / 26

Tworzenie słuchacza Słuchacz - to klasa, która może obsługiwać zdarzenie. Każda klasa, która implementuje interfejs nasłuchu staje się Słuchaczem, np.: public class MojaKlasa implements ActionListener { //... Każda klasa implementująca interfejs musi zdefiniować metody interfejsu. Dla interfejsu ActionListener jest to: public void actionperformed(actionevent e) { // instrukcje obsługujące zdarzenie Klasa-słuchacz może też implementować większą liczbę interfejsów nasłuchu (określamy w ten sposób zestaw obsługiwanych zdarzeń). Programowanie graficznych interfejsów użytkownika Autor: Paweł Rogaliński Instytut Informatyki, Automatyki i Robotyki PWr19 / 26

Interfejsy nasłuchu EventListener ActionListener Action WindowListener MouseListener MouseInputListener MouseMotionListener MenuListener KeyListener FocusListener Programowanie graficznych interfejsów użytkownika Autor: Paweł Rogaliński Instytut Informatyki, Automatyki i Robotyki PWr20 / 26

Interfejsy nasłuchu ActionListener obsługuje zdarzenia generowane przez użytkownika na rzecz danego składnika interfejsu (Np. klikniecie przycisku) AdjustmentListener obsługuje zdarzenie jako zmianę stanu składnika (np. przesuwanie suwaka w polu tekstowym) FocusListener obsługuje zdarzenie od przejścia składnika w stan nieaktywny ItemListener obsługuje zdarzenie od np. zaznaczenia pola wyboru KeyListener obsługuje zdarzenie np. od wpisywania tekstu z klawiatury MouseListener obsługuje zdarzenie od naciśnięcia klawiszy myszy MouseMotionListener obsługuje zdarzenie od przesuwania wskaźnika myszy nad danym składnikiem WindowListener obsługuje zdarzenie od okna np. minimalizacja, maksymalizacja, przesuniecie, zamkniecie Programowanie graficznych interfejsów użytkownika Autor: Paweł Rogaliński Instytut Informatyki, Automatyki i Robotyki PWr21 / 26

Przyłączanie słuchacza Wszystkie komponenty Swing umożliwiają przyłączanie/odłączanie określonych typów Słuchaczy. Służą do tego metody: addxxxlistener() oraz removexxxlistener(), gdzie XXX jest typem słuchacza. Np.: zdarzenie ActionEvent może być obsłużone przez Słuchacza implementującego interfejs ActionListener; Słuchacz taki może być przyłączony do komponentów, które mają dostęp do metody addactionlistener(). Są to: Button, List, TextField, MenuItem oraz klasy pochodne. Przykład: Słuchacz słuchacz = new Słuchacz(); przyciskok.addactionlistener(słuchacz); Programowanie graficznych interfejsów użytkownika Autor: Paweł Rogaliński Instytut Informatyki, Automatyki i Robotyki PWr22 / 26

Obsługa zdarzeń od przycisków - przykład Po kliknięciu w przycisk pole tekstowe ma zostać wypełnione tekstem. przyciski JButton etykiety JLabel pola tekstowe JTextField Programowanie graficznych interfejsów użytkownika Autor: Paweł Rogaliński Instytut Informatyki, Automatyki i Robotyki PWr23 / 26

Obsługa zdarzeń od przycisków przykład cd. import javax.swing.*; import java.util.*; import java.io.*; import java.lang.*; import java.awt.event.*; Klasa do przechowywania tekstu wyrażanych opinii class Dane { String opinia1,opinia2,opinia3; Dane() { opinia1=opinia2=opinia3=null; klasa implementuje interfejs słuchacza zdarzeń ActionListener public class ProstaAplikacja4 extends JFrame implements ActionListener { JButton weopinia1 = new JButton("Obsluga komputera"); JButton weopinia2 = new JButton("Jezyk angielski"); JButton weopinia3 = new JButton("Jezyk niemiecki"); JTextField wyopinia1=new JTextField(30); JTextField wyopinia2=new JTextField(30); JTextField wyopinia3=new JTextField(30); Dane dana = new Dane(); przyciski JButton oraz pola tekstowe JTextField aktywne elementy interfejsu użytkownika obiekt pamiętający wprowadzone dane Programowanie graficznych interfejsów użytkownika Autor: Paweł Rogaliński Instytut Informatyki, Automatyki i Robotyki PWr24 / 26

Obsługa zdarzeń od przycisków przykład cd. public ProstaAplikacja4() { super("ramka 4"); setdefaultcloseoperation(jframe.exit_on_close); setsize(450,160); JPanel panel=new JPanel(); weopinia1.addactionlistener(this); weopinia2.addactionlistener(this); weopinia3.addactionlistener(this); Przyłączenie słuchacza zdarzeń generowanych przez przyciski panel.add(weopinia1); panel.add(weopinia2); panel.add(weopinia3); JLabel eopinia1= new JLabel(" opinia 1",SwingConstants.RIGHT); panel.add(eopinia1); panel.add(wyopinia1); JLabel eopinia2= new JLabel(" opinia 2",SwingConstants.RIGHT); panel.add(eopinia2); panel.add(wyopinia2); JLabel eopinia3= new JLabel(" opinia 3",SwingConstants.RIGHT); panel.add(eopinia3); panel.add(wyopinia3); Umieszczenie wszystkich komponentów w kontenerze panel setcontentpane(panel); show(); Umieszczenie kontenera panel w głównym oknie aplikacji oraz wyświetlenie głównego okna na ekranie Programowanie graficznych interfejsów użytkownika Autor: Paweł Rogaliński Instytut Informatyki, Automatyki i Robotyki PWr25 / 26

Obsługa zdarzeń od przycisków przykład cd. public void actionperformed (ActionEvent evt) { Object zrodlo = evt.getsource(); if (zrodlo==weopinia1) dana.opinia1= new String("Znajomosc obslugi komputera"); else if (zrodlo==weopinia2) dana.opinia2= new String("Znajomosc jezyka angielskiego"); else if (zrodlo==weopinia3) dana.opinia3= new String("Znajomosc jezyka niemieckiego"); wyopinia1.settext(dana.opinia1); wyopinia2.settext(dana.opinia2); wyopinia3.settext(dana.opinia3); repaint(); public static void main(string[] arg) throws Exception { new ProstaAplikacja4(); Metoda z interfejsu słuchacza ActionListener, która obsługuje zdarzenia ActionEvent generowane przez przyciski Odczytanie źródła wygenerowanego zdarzenia utworzenie tekstu opinii po naciśnięciu przycisku wpisanie tekstów opinii do pól tekstowych odrysowanie wyglądu wszystkich komponentów po modyfikacji danych utworzenie głównego okna aplikacji Programowanie graficznych interfejsów użytkownika Autor: Paweł Rogaliński Instytut Informatyki, Automatyki i Robotyki PWr26 / 26