Java Swing. Tomasz Mularczyk Luty 2005

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

Programowanie obiektowe

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

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

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

Podstawy Języka Java

Graphic User Interfaces pakiet Swing

Architektura interfejsu użytkownika

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

Programowanie obiektowe

Tworzenie elementów graficznych

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

Java - interfejs graficzny

Programowanie zdarzeniowe

Programowanie obiektowe

Programowanie obiektowe

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

MVVM Light Toolkit. Julita Borkowska

Interfejsy i klasy wewnętrzne

Kompleksowe tworzenie aplikacji klasy Desktop z wykorzystaniem SWT i

Kontenery i komponenty graficzne

GUI - projektowanie interfejsów cz. II

Programowanie Obiektowe GUI

Tworzenie aplikacji Web Alicja Zwiewka. Page 1

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

Cechy systemu X Window: otwartość niezależność od producentów i od sprzętu, dostępny kod źródłowy; architektura klient-serwer;

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

Projektowanie, tworzenie aplikacji mobilnych na platformie Android

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

Dokumentacja do API Javy.

Wzorce projektowe cz. II. Wzorce projektowe cz. II 1/35

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

Czym są właściwości. Poprawne projektowanie klas

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

xmlns:prism= c. <ContentControl prism:regionmanager.regionname="mainregion" />

Firma Informatyczna ASDER. Prezentacja. Serwer danych lokalnych. Przemysław Kroczak ASDER

Programowanie obiektowe

Dokumentacja aplikacji Szachy online

PROE wykład 2 operacje na wskaźnikach. dr inż. Jacek Naruniec

Podstawy Swing. Tomasz Borzyszkowski

Multimedia JAVA. Historia

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

Programowanie dla iphone projektowanie interfejsu użytkownika

Pierwsze kroki. Algorytmy, niektóre zasady programowania, kompilacja, pierwszy program i jego struktura

Programowanie aplikacji na iphone. Wstęp do platformy ios. Łukasz Zieliński

REFERAT PRACY DYPLOMOWEJ

LABORATORIUM 7 Cel: 1_1

REFERAT O PRACY DYPLOMOWEJ

Wzorce projektowe. dr inż. Marcin Pietroo

Instrukcja obsługi notowań koszykowych w M@klerPlus

Compas 2026 Vision Instrukcja obsługi do wersji 1.07

Aplikacje mobilne. Pliki zasobów, grafiki, menu, podpinanie zdarzeń. dr Tomasz Jach Instytut Informatyki, Uniwersytet Śląski

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

Programowanie obiektowe

Programowanie obiektowe zastosowanie języka Java SE

Kurs programowania. Wstęp - wykład 0. Wojciech Macyna. 22 lutego 2016

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

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

MAMP: Można to pobrać i zainstalować z XAMPP: Można go pobrać i zainstalować z

Szkolenie. IBM Lotus - Podstawy projektowania aplikacji w Domino Designer 8.5. Strona szkolenia Terminy szkolenia Rejestracja na szkolenie Promocje

Czym jest jpalio? jpalio jpalio jpalio jpalio jpalio jpalio jpalio jpalio

Podstawy Programowania 2

Klasy abstrakcyjne i interfejsy

Java jako język programowania

Firma Informatyczna ASDER. Prezentacja. Serwer danych zdalnych. Przemysław Kroczak ASDER

Zdarzenia Klasa Application Powiadomienia Toast AlertDialog

Załącznik techniczny przedmiotu zamówienia komponentu

Uruchamianie bazy PostgreSQL

Plan. Aplikacja. Architektura aplikacji. Architektura aplikacji Tworzenie aplikacji Application Builder podstawy

Szczegółowy opis zlecenia Plugin do oprogramowania dlibra. Szczegółowy opis zlecenia dla Pluginu do oprogramowania dlibra.

Stworzenie programu KSIĄŻKA ADRESOWA posiadającego funkcjonalności przechowywania danych o osobach dodanych przez użytkownika.

Programowanie graficznych interfejsów użytkownika

Krótka Historia. Co to jest NetBeans? Historia. NetBeans Platform NetBeans IDE NetBeans Mobility Pack Zintegrowane moduły. Paczki do NetBeans.

Platformy Programowania

Symulacja samochodu z kamerą stereowizyjną. Krzysztof Sykuła 15 czerwca 2007

WPROWADZENIE DO JĘZYKA JAVA

Aplikacje w środowisku VBA. Visual Basic for Aplications

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

Tworzenie prezentacji w MS PowerPoint

Forum Client - Spring in Swing

Backend Administratora

Dariusz Brzeziński. Politechnika Poznańska, Instytut Informatyki

Programowanie w Javie

Aplikacje w środowisku Java

Budowa aplikacji ASP.NET z wykorzystaniem wzorca MVC

Temat 4. Storyboard i element interfejsu użytkownika Gra w kulki- część 1

Informatyka Edytor tekstów Word 2010 dla WINDOWS cz.1

Podstawy technologii cyfrowej i komputerów

Android, wprowadzenie do SDK

Dokument Detaliczny Projektu

Temat: Ułatwienia wynikające z zastosowania Frameworku CakePHP podczas budowania stron internetowych

5.2. Pierwsze kroki z bazami danych

Instalacja SQL Server Express. Logowanie na stronie Microsoftu

OMNITRACKER Wersja testowa. Szybki przewodnik instalacji

Wypożyczalnia VIDEO. Technologie obiektowe

Programowanie obiektowe - 1.

Dokumentacja projektu Makao karciana gra sieciowa

A Zasady współpracy. Ocena rozwiązań punktów punktów punktów punktów punktów

ASP.NET MVC. Podstawy. Zaawansowane programowanie internetowe Instrukcja nr 3

SWING. dr Jarosław Skaruz

Transkrypt:

Java Swing Tomasz Mularczyk Luty 2005

Java Swing wprowadzenie Swing - Wprowadzenie Pierwotnym IU dla Javy był AWT (Abstract Windowing Toolkit) IU Swing dodano dopiero w wersji Javy 1.2 (przełom 1997/98) Dlaczego skonstruowano kolejny sposób tworzenia interfejsów?

Java Swing wprowadzenie Swing - Wprowadzenie Główny powód: niezadowolenie osób tworzących w Javie z istniejącego rozwiązania Wygląd interfejsów stworzonych przy pomocy AWT zależało od systemu operacyjnego AWT oferowało słabe wsparcie dla rysowania po ekranie oraz nie zapewniało kompatybilności operacji Drag and Drop pod kontrolą różnych SO

Java Swing a AWT Swing a AWT AWT: Wygląd kontrolek specyficzny dla każdego SO Swing: Wygląd kontrolek niezależny od SO Schematy wyglądu (look and feel) Bogate wsparcie dla rysowania 2d

Java Swing a AWT Swing a AWT AWT: Korzysta z wywołań funkcji systemowych przy tworzeniu i zarządzaniu wyglądem aplikacji Generalnie szybki, choć szybkość działania zależy od systemu operacyjnego Swing: W całości napisany w Javie Nieco wolniejszy, ale mniejsze różnice w prędkości pomiędzy platformami

Java Swing a AWT Swing a AWT AWT: Z założenia ciężki typ kontrolek (lekkie dodano później w wersji 1.1) Wspierany od początku istnienia Javy Swing: Lekki typ kontrolek Wymaga wirtualnej maszyny w wersji minimum 1.2 (dziś to już nie martwi)

Java Swing a AWT Swing a AWT AWT: Stosunkowo trudne tworzenie narzędzi do wizualizacji w locie (ciężkie kontrolki) Swing: Łatwe tworzenie narzędzi do podglądu (lekkie kontrolki) oraz tworzenia IU wspierane m.in. przez JBuildera, wtyczki do Eclipse

Java Swing założenia projektu Swing - Założenia projektu 1. Rozszerzyć kontrolki AWT Wszystkie kontrolki AWT mają odpowiednik w Swingu Funkcjonalność wielu kontrolek rozszerzono (np. wszystkie kontrolki wyboru akceptują teraz zarówno tekst jak i obrazki jako element wyglądu) Dodano szereg nowych kontrolek (tabele, drzewa, paski stanu, chmurki podpowiedzi...)

Java Swing założenia projektu Swing - Założenia projektu 2. Dodać sensowną obsługę 2D java.awt.graphics był chyba najbardziej znienawidzonym pakietem Dodano możliwość rysowania niezależnie od rozdzielczości i urządzenia Wsparcie dla przezroczystości, ulepszenie wyświetlania tekstów Anti-aliasing i krzywe Beziera w standardzie

Java Swing założenia projektu Swing - Założenia projektu 3. Wprowadzić schematy wyglądu Część użytkowników oczekuje tego samego wyglądu od aplikacji działającej w różnych środowiskach Inni wolą, aby program zachowywał się tak, jak resztą programów działających na jego platformie (na to pozwalał AWT) Swing ma zadowolić obie te grupy, a nawet pozwolić użytkownikowi wybrać wygląd programu

Java Swing założenia projektu Swing - Założenia projektu 4. Obsłużyć Przeciąganie i Upuszczanie Dodano pomost między mechanizmami Javy a tymi wbudowanymi w konkretne systemy operacyjne, z których korzystają typowe aplikacje Dostrzeżono w ten sposób, że nie całe oprogramowanie jest pisane w Javie :)

Java Swing założenia projektu Swing - Założenia projektu 5. Porządnie obsłużyć wyświetlanie tekstu JTextComponent potrafi wyświetlać tekst opisany przy pomocy języka podobnego do SGMLa. Obsługa wielu fontów, podkreśleń wielu linii, osadzonych obrazków Możliwe również wyświetlanie przeskalowanych, obróconych czy zacienionych tekstów

Java Swing założenia projektu Swing - Założenia projektu 6. Ułatwić przeniesienie kodu z AWT Swing jako przyszłość, AWT tylko dla kompatybilności stąd potrzeba migracji Większość kontrolek z AWT ma w Swingu odpowiednika o nazwie J<nazwa_AWT>, np. dla klasy Button odpowiednikiem jest JButton Swing implementuje wszystkie metody z AWT, więc migracja to tylko zmiana nazw

Java Swing założenia projektu Swing - Założenia projektu 7. Zaprojektować w oparciu o MVC (Model, View, Controller)

Architektura Model View Controller Architektura MVC założenia Program kiedyś: Wejście -> Przetwarzanie -> Wyjście Input->Processing ->Output Program dziś: Kontroler -> Model -> Widok Controller->Model ->View

Architektura Model View Controller Architektura MVC - opis Podejście to pojawiło się w SmallTalk 80 Kontrolery, model i widoki traktowane jako oddzielne byty Zmiany modelu natychmiast odzwierciedlane w widokach

Architektura Model View Controller Architektura MVC - opis Wszystkie komponenty w systemie muszą dać się określić jako kontroler, model, widok bądź część któregoś z nich Połączenie model <-> widok jest realizowane dynamicznie w czasie działania programu, a nie w czasie kompilacji Jeżeli zaprojektujemy w MVC każdy komponent, to łatwe będzie ich łączenie w spójny projekt

Architektura Model View Controller Architektura MVC - opis Usuwanie bądź przebudowa komponentu nie pociąga za sobą potrzeby ingerencji w cały system Model nie wie, jakie są jego kontrolery, nie zna także korzystających z niego widoków sam system zajmuje się ich spójnym połączeniem Kontrolery i Widoki znają skojarzony z nimi model

Architektura Model View Controller Architektura MVC - przykład Załóżmy, że projektujemy wieloosobową, trójwymiarową grę, w której gracze dowodzą okrętami: Model cały świat 3d wraz opisami statków graczy, lecących pocisków, własności morza Kontrolery akcje podejmowane przez różnych graczy, np. rozkaz wystrzelenia pocisku Widoki np. widok z mostku, rzut pionowy (mapa akwenu), czy patrzenie przez lornetkę

Architektura Model View Controller Architektura MVC w Javie Java oferuje wsparcie dla MVC poprzez dwie klasy: Obserwator (Observer) obiekt, który chce być powiadamiany o zmianach w innym obiekcie Obserwowany (Observable) każdy obiekt, którego zmiana stanu może zainteresować inny obiekt

Architektura Model View Controller Architektura MVC w Javie MODEL jest klasy Obserwowany WIDOK jest klasy Obserwator WIDOK i KONTROLER posiadają referencję do MODELU i potrafią się z nim komunikować poprzez wywoływanie jego metod

Architektura Model View Controller Architektura MVC w Swingu Swing a architektura MVC: Ogólny model MVC MVC w Swingu

Architektura Model View Controller Architektura MVC w Swingu - przykład Zajmijmy się prostym Przyciskiem (JButton) Model przechowuje stan, pozwala na jego modyfikację i odczytywanie. Dodatkowo pozwala dodawać/usuwać słuchaczy(listeners). Widok i kontroler zajmują się wyświetlaniem stanu i przycisku na ekranie. Tutaj także pamiętamy, w którym miejscu na ekranie znajduje się przycisk. Ta część zajmuje się również obsługą zdarzeń AWT.

Swing klasy słuchające Słuchacze (Listeners) W modelu, z którego korzysta Swing, akcje podejmowane są w odpowiedzi na zajście konkretnych zdarzeń. Aby powiązać zdarzenie z określoną akcją, każdej kontrolce musimy przyporządkować specjalną klasę, która będzie reagowała na zajście tego zdarzenia. Tę klasę nazywamy słuchaczem.

Swing klasy słuchające Słuchacze jako klasy wewnętrzne Koszt zaprojektowania dla każdego elementu interfejsu oddzielnej klasy obsługującą jego zdarzenia jest bardzo duży. Nie jest to konieczne! Idealnie sprawdzają się tutaj klasy wewnętrzne Javy, gdyż od razu uzyskują dostęp do zmiennych i metod kontrolki.

Swing klasy słuchające Anonimowi słuchacze Java raczy nas kolejnym udogodnieniem w takim modelu obsłudze zdarzeń umożliwia tworzenie klas anonimowych. Stąd kod dodający przyciskowi obsługę zdarzenia może wyglądać tak: Button.addActionListener(new ActionListener() { public void actionperformed(actionevent evt) { m_icount++; }});

Java Swing zarys klas i pakietów Kilknaście wybranych klas Swing (większość pochodzi z pakietu javax.swing) Zarys klas i pakietów

Java Swing zarys klas i pakietów Zarys klas i pakietów javax.swing javax.swing.border javax.swing.colorchooser javax.swing.event javax.swing.filechooser javax.swing.plaf javax.swing.plaf.basic javax.swing.plaf.metal javax.swing.plaf.multi javax.swing.table javax.swing.text javax.swing.text.html javax.swing.text.html.parser javax.swing.text.rtf javax.swing.tree javax.swing.undo - podstawowa funkcjonalność i kontrolki - style obramowań - menu wyboru kolorów - zdarzenia i klasy słuchaczy - menu wyboru plików - schematy wyglądu - bazowa klasa z wyglądem interfejsu - tabele - pozwala przechowywać i wizualizować dane - pomaga obsługiwać operacje Cofnij/Powtórz

Java Swing wtyczki UI Wtyczki interfejsu użytkownika Schematy wyglądu dostarczane wraz ze Swingiem: GTKLookAndFeel (Linuks z GTK) MetalLookAndFeel (typowy dla Javy) MotifLookAndFeel WindowsLookAndFeel (typowy dla Windows) Niestety, nie każdy styl jest już obsługiwany na każdej platformie.

Java Swing wtyczki UI Wtyczki interfejsu użytkownika MetalLookAndFeel MotifLookAndFeel WindowsLookAndFeel DefaultLookAndFeel

Java Swing przykłady kodu i wyglądu Przykłady kodu i wyglądu okien Wygląd pokazanych okien uzyskaliśmy poprzez poinformowanie menedżera wyglądu o tym, który chcielibyśmy uzyskać: UIManager.setLookAndFeel( "javax.swing.plaf.metal.metallookandfeel" ); Istnieje także możliwość pozostawienia wyboru, który wygląd wybrać, użytkownikowi (program wykorzysta typowe ustawienia pobrane z lokalnego pliku <JAVA>/lib/swing.properties)

Java Swing przykłady kodu i wyglądu Przykłady kodu i wyglądu okien Stworzenie samego okienka wraz z napisem oraz przyciskiem zajmuje tylko chwilę: MainFrame = new JFrame("Roznice w wyglądzie są duże"); MainFrame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); JLabel label = new JLabel("JAKIS TEKST"); JButton but = new JButton(); but.settext("ok"); JPanel panel = new JPanel(); panel.setborder(borderfactory.createemptyborder()); panel.add(but); panel.add(label); MainFrame.getContentPane().add(panel); MainFrame.pack(); MainFrame.setSize(400,100);

Java Swing przykłady kodu i wyglądu Generatory kodu Nie musimy wszystkiego pisać sami Jigloo

Java Swing przykłady kodu i wyglądu Generatory kodu JFormDesigner

Java Swing przykłady kodu i wyglądu Generatory kodu Główny problem generatory są płatne JFormDesigner kosztuje 129 $ Jigloo kosztuje 75 $, ale jest darmowy do domowego użytku

Java Swing podsumowanie Podsumowanie Swing rozszerza AWT i przerasta go w wielu względach Wygląd aplikacji napisanych przy użyciu Swinga jest taki, jakiego sobie zażyczymy na każdej platformie Swing został zaprojektowany z uwzględnieniem architektury Model-View-Controller Dzięki zastosowaniu anonimowych słuchaczy pisanie kodu obsługującego zdarzenia jest szybkie

Java Swing podsumowanie Porównanie AWT i Swing: http://bdn.borland.com/article/0,1410,26970,00.html http://mindprod.com/jgloss/swing.html Dostępne schematy wyglądu: http://java.sun.com/docs/books/tutorial/uiswing/misc/plaf.html Model-View-Controller: http://ootips.org/mvc-pattern.html Oczywiście polecam dokumentację ze strony Sun-a: http://java.sun.com/j2se/1.4.2/docs/api/javax/swing/packagesummary.html Gdzie dalej szukać?

Java Swing podsumowanie Gdzie dalej szukać? Jigloo http://www.cloudgarden.com/jigloo/index.html JFormDesigner http://www.jformdesigner.com/