Graphic User Interfaces pakiet Swing

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

Programowanie obiektowe

Java - interfejs graficzny

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

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

Kontenery i komponenty graficzne

Programowanie zdarzeniowe

Programowanie graficznych interfejsów użytkownika

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

Tworzenie elementów graficznych

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

Dokumentacja do API Javy.

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

GUI - projektowanie interfejsów cz. II

Programowanie Obiektowe GUI

Tworzenie i obsługa graficznego interfejsu uŝytkownika

Klasy abstrakcyjne i interfejsy

Obsługa zdarzeń. Wykład 4

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

Podstawy Języka Java

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

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

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

SWING. dr Jarosław Skaruz

Przykładowe roz wiązanie:

Podstawowe informacje o apletach

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

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

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

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

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

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

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

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

Konstruktory. Streszczenie Celem wykładu jest zaprezentowanie konstruktorów w Javie, syntaktyki oraz zalet ich stosowania. Czas wykładu 45 minut.

Programowanie obiektowe

Programowanie obiektowe

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

Programowanie obiektowe

Multimedia JAVA. Historia

Programowanie obiektowe

JAVA W SUPER EXPRESOWEJ PIGUŁCE

LABORATORIUM 7 Cel: 1_1

Instrukcja tworzenia aplikacji EE na bazie aplikacji prezentowanej na zajęciach lab.4 z PIO umożliwiająca przez sieć dostęp wielu użytkownikom.

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

Aplikacje w środowisku Java

Programowanie obiektowe

PROJEKTOWANIE ABSTRAKCYJNEJ KLASY FIGURA PRZECHOWUJĄCEJ WSPÓLNE CECHY OBIEKTÓW GRAFICZNYCH

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

Wprowadzenie do projektu QualitySpy

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

Aplikacja wielowątkowa prosty komunikator

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

Aplikacje w środowisku Java

Aplikacja wielow tkowa prosty komunikator

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

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

Podstawy Swing. Tomasz Borzyszkowski

PWSG Ćwiczenia 12. Wszystkie ukończone zadania należy wysłać na adres: lub

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

Programowanie obiektowe

Java biblioteka Swing

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

5.2. Pierwsze kroki z bazami danych

Ćwiczenia 9 - Swing - część 1

Tworzenie menu i authoring w programie DVDStyler

1 Atrybuty i metody klasowe

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

Tworzenie raportów. Ćwiczenie 1. Utwórz Autoraport przedstawiający tabelę Studenci

Programowanie Zdarzeniowe(PROZ) Projekt własny - gra SUDOKU Dokumentacja końcowa

Scenariusz Lekcji. Część organizacyjna:

Programowanie obiektowe

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

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

5.4. Tworzymy formularze

Interfejsy i klasy wewnętrzne

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

Klasy i obiekty cz II

Aktywności są związane z ekranem i definiują jego wygląd. Dzieje się to poprzez podpięcie do aktywności odpowiedniego widoku.

Laboratorium z informatyki sem.iii/ćw. 4 Wydział Transportu PW /19

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

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

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

Programowanie obiektowe

Dziedziczenie. Streszczenie Celem wykładu jest omówienie tematyki dziedziczenia klas. Czas wykładu 45 minut.

Dodanie nowej formy do projektu polega na:

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

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

Programowanie Obiektowe Java

1. Które składowe klasa posiada zawsze, niezależnie od tego czy je zdefiniujemy, czy nie?

D:\DYDAKTYKA\ZAI_BIS\_Ćwiczenia_wzorce\04\04_poprawiony.doc 2009-lis-23, 17:44

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

Klasy. dr Anna Łazińska, WMiI UŁ Podstawy języka Java 1 / 13

Tworzymy projekt File->New Project->Java Application, przy czym tym razem odznaczamy create main class

MATLAB Prowadzący: dr hab. inż. Marek Jaszczur Poziom: początkujący

Architektura interfejsu użytkownika

Budowa aplikacji wielowarstwowych. Obsługa zdarzeń

Java Podstawy. Michał Bereta

Zastosowanie słuchaczy zdarzeń wg

Transkrypt:

Graphic User Interfaces pakiet Swing Streszczenie Celem wykładu jest zaprezentowanie podstaw tworzenia graficznych interfejsów przy użyciu pakietu Swing. Czas wykładu 90 minut. Można śmiało stwierdzić, że w obecnych czasach zdecydowana większość aplikacji posiada interfejsy graficzne. W Javie, do tworzenia interfejsów graficznych stosuje się pakiet AWT (Abstract Windows Toolkit) i jego rozszerzenie Swing. Temat jest na tyle obszerny, że w trakcie wykładu poruszymy tylko wybrane aspekty tworzenia interfejsów: tworzenie układu graficznego oraz obsługę zdarzeń. Dla lepszego zapoznania się z tematem oraz głębszego zrozumienia polecam zestaw tutoriali: http://docs.oracle.com/javase/tutorial/uiswing/. Szczególnie poświęcony komponentom: http://docs.oracle.com/javase/tutorial/uiswing/components/index.html oraz zdarzeniom: http://docs.oracle.com/javase/tutorial/uiswing/events/index.html Podstawowe okno aplikacji Interfejs graficzny jest obiektem klasy JFrame. W praktyce jest obiektem klasy potomnej klasy JFrame. // tytuł aplikacji // operacja wykonywana przy zamykaniu aplikacji 1

Okno o ustalonych rozmiarach oraz kolorze tła: import java.awt.*; // ustalenie koloru tła // rozmiar okna startowego // zablokowanie zmiany rozmiaru okna setresizable(false); Dodawanie komponentów Komponenty dodaje się do paneli. Okno główne aplikacji posiada panel, do którego odwołuje się poprzez metodę getcontentpane(). Najpierw ustala się odpowiedniego menadżera położeń czyli mechanizm odpowiedzialny za rozmieszczanie elementów na panelu okna. Następnie stosując metodę getcontentpane().add() do panelu dodaje się poszczególne komponenty. import java.awt.*; // wygenerowanie przycisku JButton b = new JButton("OK"); // wygenerowanie pola tekstowego JTextField t = new JTextField(10); 2

// ustalenie menadżera położeń // dodanie przycisku getcontentpane().add(b); // dodanie pola tekstowego getcontentpane().add(t); Obsługa zdarzeń Obsługę zdarzeń realizuje się w trzech etapach: 1. zdefiniowanie klasy implementującej odpowiedni słuchacz zdarzeń interfejs odpowiadający obiektom generującym zdarzenia. Interfejsy mają nazwy XXXListener, gdzie XXX jest zależne od obiektu, np: dla przycisków to będzie ActionListener, dla myszy MouseListener, itd. W zależności od interfejsu należy zaimplementować różne zestawy metod. Wszystkie te metody posiadają jeden argument zdarzenie odpowiedniej klasy. Zdarzenie to obiekt przechowujący rożne informacje, np. w przypadku myszy to współrzędne wierzchołka kursora myszy lub numer przypisku, którym wykonano kliknięcie. 2. wygenerowanie obiektu zdefiniowanej klasy nasłuchującej. 3. skojarzenie obiektu generującego zdarzenie, z obiektem nasłuchującym zdarzenia. Do tego celu służą metody o nazwach addxxxlistener, gdzie XXX jest zależne od obiektu, np: dla przycisków to będzie addactionlistener, dla myszy MouseListener, itd. Metody te posiadają argument będący referencją do obiektu klasy implementującej słuchacz zdarzeń. Przykład programu, który po naciśnięciu przycisku generuje liczbę i wpisuje ją do pola tekstowego. import java.awt.event.*; import java.util.*; 3

private Random r = new Random(); JButton b1 = new JButton("Losuj"); JTextField t1 = new JTextField(10); // klasa implementująca odpowiedni interfejs class BListener implements ActionListener public void actionperformed(actionevent e) t1.settext("" + r.nextint(100)); // obiekt klasy nasłuchującej private BListener bl = new BListener(); getcontentpane().add(b1); getcontentpane().add(t1); // skojarzenie obiektu generującego z nasłuchującym b1.addactionlistener(bl); Proszę zauważyć, że klasa BListener została wykorzystana raz, do wygenerowania obiektu bl, która to referencja została wykorzystana również tylko raz. Często zamiast tej klasy implementację interfejsu przenosi się do klasy głównej, tj: import java.awt.*; import java.awt.event.*; import java.util.*; 4

implements ActionListener private Random r = new Random(); JButton b1 = new JButton("Losuj"); JTextField t1 = new JTextField(10); public void actionperformed(actionevent e) t1.settext("" + r.nextint(100)); getcontentpane().add(b1); getcontentpane().add(t1); b1.addactionlistener(this); Argumentem metody addactionlistener staje się referencja do samej siebie czyli this. W praktyce często stosuję się jeszcze jeden skrót, mianowicie klasy i obiekty anonimowe: import java.awt.*; import java.awt.event.*; import java.util.*; private Random r = new Random(); JButton b1 = new JButton("Losuj"); JTextField t1 = new JTextField(10); 5

getcontentpane().add(b1); getcontentpane().add(t1); // obiekt anonimowy b1.addactionlistener(new ActionListener() public void actionperformed(actionevent e) t1.settext("" + r.nextint(100)); ); We wszystkich trzech implementacjach najistotniejsza jest metoda actionperformed(actionevent e) zawierająca implementację zdarzenia. Łańcuch zdarzeń Zdarzenia nie muszą być wywołane akcją użytkownika programu. Jedne zdarzenia mogą uruchamiać inne. Przykład: wciśnięcie przycisku powoduje wygenerowanie liczby, jej wpisanie w pierwszym polu tekstowym. Ponadto pojawienie się liczby w pierwszym polu tekstowym powoduje wpisanie jej dwukrotności w drugim polu tekstowym. import java.awt.event.*; import javax.swing.event.*; import java.util.*; private Random r = new Random(); JButton b1 = new JButton("Losuj"); JTextField 6

t1 = new JTextField(10), t2 = new JTextField(10); getcontentpane().add(b1); getcontentpane().add(t1); getcontentpane().add(t2); b1.addactionlistener(new ActionListener() public void actionperformed(actionevent e) t1.settext("" + r.nextint(100)); ); t1.getdocument().adddocumentlistener(new DocumentListener() public void changedupdate(documentevent e) public void removeupdate(documentevent e) public void insertupdate(documentevent e) t2.settext ("" + (2 * Integer.parseInt(t1.getText())) ); ); Grupy przycisków Plik swing_07-grupy.java (na stronie wykładu) zawiera prosty przelicznik cali na centymetry i na odwrót. 7

Specyficzna obróbka grup polega na tym, że przyciski JRadioButton należy połączyć logicznie w grupę ButtonGroup, aby w jednym momencie tylko jedna z opcji była dostępna. // połączenie przycisków w jedną grupę logiczną group.add(rbic); group.add(rbci); Następnie przyciski grupy umieszcza się na jednym panelu, aby wizualnie wyglądały jak grupa przycisków. Ten panel należy dołączyć do panelu głównego programu. // umieszczenie przycisków grupy na panelu JPanel radiopanel = new JPanel(new GridLayout(1,0)); radiopanel.add(rbci); radiopanel.add(rbic); rbic.setselected(true); getcontentpane().add(radiopanel); Obsługa myszy Plik swing_09-mysz.java (na stronie wykładu) zawiera program przedstawiający obsługę myszy. Zlicza wejścia i wyjścia kursora myszy nad obszar przycisku, oraz wskazuje przycisk oraz pozycję kursora, w której kliknięto mysz. Zaimplementowano pięć metod interfejsu MouseListener. Nazwy metod mówią, które zdarzenia wywołują daną metodę. Lepsze wykorzystanie przestrzeni okna tabbedpane Plik swing_11-tabbedpane.java (na stronie wykładu) zawiera program przedstawiający zastosowanie paneli tabulowanych. 8