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

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

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

Programowanie obiektowe

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

Java - interfejs graficzny

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

Podstawy Języka Java

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

Tworzenie elementów graficznych

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

PROGRAMOWANIE APLIKACJI MULTIMEDIALNYCH

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

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

Programowanie graficznych interfejsów użytkownika

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

Programowanie obiektowe

Kontenery i komponenty graficzne

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 Foundation Clases. Tworzenie graficznych interfejsów użytkownika (GUI) w Javie

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

Programowanie zdarzeniowe

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

SWING. dr Jarosław Skaruz

Programowanie obiektowe zastosowanie języka Java SE

Multimedia JAVA. Historia

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

Graphic User Interfaces pakiet Swing

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

1 Atrybuty i metody klasowe

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

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

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

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

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

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

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

Programowanie obiektowe

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

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

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

Wstęp do programowania w języku Java

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

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

Ćwiczenie 1. Przygotowanie środowiska JAVA

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

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

Java jako język programowania

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

Aplikacja wielowątkowa prosty komunikator

Programowanie zdarzeniowe

Podstawowe informacje o apletach

Bezpieczne uruchamianie apletów wg

Wstęp do programowania w języku Java

Wstęp do programowania w języku Java

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

Aplikacje w Javie wykład 12 Programowanie GUI

Podstawy, środowisko JDK, kompilacja programów z linii poleceń

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

Aplikacja wielow tkowa prosty komunikator

Podstawy Swing. Tomasz Borzyszkowski

Programowanie obiektowe

Wstęp do programowania w języku Java

WPROWADZENIE DO JĘZYKA JAVA

Programowanie Obiektowe GUI

Podstawy Programowania

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

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

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

Aplikacje w środowisku Java

Java Podstawy. Michał Bereta

Dokumentacja do API Javy.

Operatory. Składnia. Typy proste. Znaki specjalne

Wykład 1: Wprowadzenie do technologii Java

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

Wykład 11: Programowanie Apletów

Programowanie w Javie

JavaFX. Zaawansowane technologie Javy 2019

Programowanie w Internecie. Java

Przykłady interfejsu TCP i UDP w Javie

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

Swing Application Framework czyli tam i z powrotem. Copyright Piotr Kochański & Erudis,

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

LABORATORIUM 7 Cel: 1_1

Programowanie w Javie cz. 1 Wstęp. Łódź, 24 luty 2014 r.

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

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

Java biblioteka Swing

JAVA. Tomasz Grzywacz.

Programowanie Obiektowe Java

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

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

Wykład 7: Pakiety i Interfejsy

Architektura interfejsu użytkownika

Przykładowe roz wiązanie:

WPROWADZENIE DO JĘZYKA JAVA

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

1. Co będzie wynikiem wykonania poniŝszych instrukcji? g2d.gettransform().scale(1, -1); g2d.gettransform().translate(4, -8); g2d.drawline(4, 0, 4, 4);

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

Wykład 4: Klasy i Metody

Transkrypt:

Programowanie graficznego interfejsu użytkownika Wykład 8 Maciej Wołoszyn mailto:woloszyn@fatcat.ftj.agh.edu.pl 10 maja 2006 Spis treści 1 JFC/Swing 1 1.1 Prosty przykład................................. 2 1.2 Swing i AWT.................................. 2 1.3 Podstawowe klasy okien............................ 3 1.4 Przykładowe komponenty............................ 3 1.5 Dodawanie komponentów do obiektu macierzystego............. 3 1.6 Bezpieczeństwo wątków............................ 3 1.7 Rozmieszczanie komponentów......................... 4 1.8 Usuwanie komponentów............................ 7 1.9 Aplety...................................... 8 1.10 Tworzenie apletu................................ 8 1.11 Umieszczanie apletu na stronie WWW..................... 8 1.12 Appletviewer.................................. 9 1.13 Cykl życia apletu................................ 10 1 JFC/Swing JFC (Java Foundation Classes) biblioteka klas Javy zawierająca m.in.: komponenty GUI (Swing) Proszę o przesyłanie na ten adres informacji o znalezionych błędach, literówkach oraz propozycji zmian i uzupełnień. Dokument przygotowano za pomocą systemu LATEX. Prawa autorskie zastrzeżone. 1

Programowanie GUI Wykład 8 2 Java 2D API wsparcie dla drag-and-drop mechanizmy internacjonalizacji programów zbiór komponentów GUI o nazwie Swing zawarty jest w pakietach javax.swing.* obecny w Javie od wersji 1.2 komponenty Swing mogą być wykorzystywane zarówno w aplikacjach, jak i w apletach (programach osadzonych w przeglądarce internetowej) 1.1 Prosty przykład import javax.swing.*; public class P01 { public static void main(string[] args) { JFrame f = new JFrame("P01"); f.setdefaultcloseoperation( JFrame.EXIT_ON_CLOSE ); f.setsize(500,300); program musi się znajdować w pliku P01.java kompilacja: javac P01.java uruchomienie: java P01

Programowanie GUI Wykład 8 3 1.2 Swing i AWT Swing oparty jest (także relacjami dziedziczenia) na pierwotnym zestawie narzędzi obsługujących GUI w Javie od jej pierwszych wersji tzw. AWT (Abstract Window Toolkit) pakiety java.awt.* Przykład: java.lang.object java.awt.component java.awt.container java.awt.window java.awt.frame javax.swing.jframe 1.3 Podstawowe klasy okien JFrame pojedyncze okno aplikacji; rozwinięcie klasy Frame z AWT; JDialog okno dialogowe JApplet obszar apletu 1.4 Przykładowe komponenty JLabel etykieta tekstowa JLabel(String s) JButton przycisk JButton(String s) JTextField pole tekstowe JTextField(String s, int columns) JList lista JList(Object[] listdata) 1.5 Dodawanie komponentów do obiektu macierzystego poprzez wywołanie (dla obiektu na wyższym poziomie hierarchii) metody: add(component comp) jeśli dodajemy do pojemnika (ramki, panela itp), który już jest wyświetlony, to należy wywołać metodę validate() 1.6 Bezpieczeństwo watków w przeciwieństwie do AWT używając pakietu Swing można dość łatwo zapewnić poprawność działania programów wielowątkowych

Programowanie GUI Wykład 8 4 w tym celu do tworzenia lub modyfikowania elementów GUI zaleca się wykorzystanie konstrukcji: javax.swing.swingutilities.invokelater( new Runnable() { public void run(){ /*... */ ); 1.7 Rozmieszczanie komponentów elementów GUI z pakietu Swing nie dodaje się zwykle bezpośrednio do okienka, ale do zawartego w nim kontenera zwracanego przez metodę getcontentpane() import java.awt.*; import javax.swing.*; public class P10 extends JFrame{ public static void main(string[] args) { javax.swing.swingutilities.invokelater( new Runnable() { public void run() { JFrame f = new JFrame("P10"); f.setdefaultcloseoperation( JFrame.EXIT_ON_CLOSE); c.add(new JLabel("Napis JLabel")); ); f.setsize(300,100); metoda pack() powoduje automatyczne dopasowanie rozmiaru okna do preferowanych rozmiarów i rozmieszczenia komponentów

Programowanie GUI Wykład 8 5 sposób rozmieszczania elementów można zmieniać wykorzystując tzw. układu (Layout Manager) wybierany metodą setlayout, np. menedżer FlowLayout równomierne rozmieszczanie kolejno od lewej do prawej i od góry do dołu BorderLayout możliwość umieszczania elementów u góry, u dołu, po lewej, po prawej oraz w centrum, JFrame f = new JFrame("P11"); c.setlayout(new FlowLayout()); c.add(new JLabel("Napis JLabel")); c.add(new JButton("OK")); f.pack(); JFrame f = new JFrame("BorderLayout"); c.setlayout(new BorderLayout()); c.add(new JButton("Cancel"), BorderLayout.NORTH); c.add(new JLabel("Napis JLabel"));//CENTER c.add(new JButton("OK"), BorderLayout.SOUTH); f.setsize(300,200);

Programowanie GUI Wykład 8 6 kolejne menedżery: BoxLayout oraz ułatwiający jego użycie kontener Box układanie komponentów w pionie lub w poziomie GridLayout ułożenie na sieci prostokątnej JFrame f = new JFrame("Box"); c.setlayout(new BorderLayout()); Box b = Box.createHorizontalBox(); b.add(box.createhorizontalglue()); b.add(new JButton("OK")); b.add(box.createhorizontalglue()); b.add(new JButton("Cancel")); b.add(box.createhorizontalglue()); c.add(new JLabel("Napis JLabel")); c.add(b,borderlayout.south);

Programowanie GUI Wykład 8 7 JFrame f = new JFrame("GridLayout"); c.setlayout(new GridLayout(2,2)); c.add(new JButton("OK")); c.add(new JLabel("Napis JLabel")); c.add(new JButton("Cancel")); f.setsize(300,200); bardziej złożone układy elementów GUI można tworzyć posługując się panelami JPanel (również korzystającymi z menedżerów układu, domyślnie jest to FlowLayout), do których dodaje się poszczególne komponenty JFrame f = new JFrame("GridLayout+Panel"); c.setlayout(new GridLayout(2,2)); JPanel p = new JPanel(); p.add(new JButton("OK")); p.add(new JButton("Cancel")); c.add(new JLabel("JLabel 1")); c.add(p); c.add(new JLabel("JLabel 2")); f.pack();

Programowanie GUI Wykład 8 8 1.8 Usuwanie komponentów może być przydatne np. do zmiany ich zestawu i rozmieszczenia usuwanie komponentów jest możliwe z wykorzystaniem metody remove(component comp) konieczne może być odświeżenie zawartości (przydatne metody: validate i repaint()) 1.9 Aplety programy przeznaczone do działania w oknie przeglądarki internetowej (która musi w tym celu obsługiwać język Java) mają działanie ograniczone względami bezpieczeństwa: brak dostępu do danych na lokalnym dysku (ale dostępny jest również mechanizm cyfrowych podpisów dla apletów) brak problemów z instalacją programu-klienta 1.10 Tworzenie apletu wymaga utworzenia klasy dziedziczącej po klasie JApplet aplet nie potrzebuje metody main sposób obsługi elementów GUI, rysowania w oknie apletu itd. jest taki sam jak w przypadku aplikacji dla poprawy szybkości ładowania zaleca się pakowanie apletów i towarzyszących im danych w archiwa JAR import javax.swing.*; import java.awt.*; public class P19 extends JApplet { public void init() { JLabel jl = new JLabel("[APLET]"); getcontentpane().add(jl);

Programowanie GUI Wykład 8 9 1.11 Umieszczanie apletu na stronie WWW wymaga użycia znacznika <APPLET> w HTML-u <HTML> <HEAD><TITLE>Aplet P19</TITLE></HEAD> <BODY>Java applet <APPLET CODE="P19.class" WIDTH=100 HEIGHT=100></APPLET> </BODY> </HTML> 1.12 Appletviewer szybki podgląd apletu: $ appletviewer plik.html

Programowanie GUI Wykład 8 10 appletviewer w pliku ignoruje wszystko poza znacznikiem <APPLET>, więc nie trzeba nawet tworzyć pliku HTML do podglądu apletu wystarczy w pliku źródłowym umieścić w komentarzu linię taką jak np.: // <APPLET CODE="P19.class" WIDTH=100 HEIGHT=100><APPLET> i po skompilowaniu apletu uruchomić go poleceniem: $ appletviewer P19.java 1.13 Cykl życia apletu zwykle redefiniuje się niektóre lub wszystkie z następujących metod klasy Applet: init() automatycznie uruchamiana tylko raz: gdy aplet jest po raz pierwszy ładowany przez przeglądarkę, start() wywoływana za każdym razem, gdy przeglądarka wyświetla stronę z apletem, stop() uruchamiana gdy przeglądarka przechodzi na inną stronę; zwykle służy do zatrzymania kosztownych operacji (np. wyświetlania animacji), destroy() uruchamiana na koniec działania apletu (wcześniej zostanie wywołana również stop()) metody start() i stop() często służą do tworzenia, uruchamiania oraz zatrzymywania wątków Przykład: aplet, który może działać również jako niezależna aplikacja // <applet code=p17 width=200 height=50></applet> import javax.swing.*; import java.awt.*; public class P17 extends JApplet {

Programowanie GUI Wykład 8 11 public void init() { Container c = getcontentpane(); c.setlayout(new FlowLayout()); c.add(new JButton("?")); public static void main(string[] args) { JApplet a = new P17(); JFrame f = new JFrame("Aplikacja"); f.getcontentpane().add(a); f.setsize(300,70); a.init(); a.start();