Tworzenie aplikacji graficznych SWT i JFace



Podobne dokumenty
Kompleksowe tworzenie aplikacji klasy Desktop z wykorzystaniem SWT i

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

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

Aplikacje w środowisku Java

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

Programowanie Obiektowe GUI

Ciekawym rozwiązaniem służącym do obsługi zdarzeń dla kilku przycisków w ramach jednej aktywności może być następujący kod:

Java - interfejs graficzny

Aplikacje WWW - laboratorium

Builder (budowniczy) Cel: Przykład:

Programowanie obiektowe

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

Zaawansowane aplikacje internetowe - laboratorium Web Services (część 1).

Podstawy Języka Java

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

Projekt Hurtownia, realizacja rejestracji dostaw produktów

Laboratorium 8 ( Android -pierwsza aplikacja)

Zaawansowane aplikacje internetowe

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

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

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

Programowanie zdarzeniowe

Aplikacje WWW - laboratorium

Programowanie obiektowe / języki programowania W. 2 - SWT

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

Architektura interfejsu użytkownika

Tworzenie elementów graficznych

Wprowadzenie do projektu QualitySpy

8. Listy wartości, dodatkowe informacje dotyczące elementów i przycisków

Budowa aplikacji ASP.NET współpracującej z bazą dany do obsługi przesyłania wiadomości

Projekt Hurtownia, realizacja rejestracji dostaw produktów

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

Przewodnik... Tworzenie ankiet

Rys. 1. Główne okno programu QT Creator. Na rysunku 2 oznaczone zostały cztery przyciski, odpowiadają kolejno następującym funkcjom:

GUI - projektowanie interfejsów cz. II

Microsoft.NET: ASP.NET MVC + Entity Framework (Code First)

Aplikacja webowa w Javie szybkie programowanie biznesowych aplikacji Spring Boot + Vaadin

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

UNIWERSYTET RZESZOWSKI KATEDRA INFORMATYKI

Zaawansowane aplikacje internetowe - laboratorium

Formularze w programie Word

Laboratorium 7 Blog: dodawanie i edycja wpisów

Instalacja i obsługa aplikacji MAC Diagnoza EW

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

Podręcznik Użytkownika LSI WRPO

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

Komponent Formularz. Rys. 1. Strona programu Joomla - Rys. 2. Instalacja komponentu

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

Instalacja SAS Forecast Studio for Desktop 12.1

Wzorce Strukturalne. Adapter: opis. Tomasz Borzyszkowski

2) W wyświetlonym oknie należy zaznaczyć chęć utworzenia nowej aplikacji (wygląd okna może się różnić od powyższego); kliknąć OK

Plan. Formularz i jego typy. Tworzenie formularza. Co to jest formularz? Typy formularzy Tworzenie prostego formularza Budowa prostego formularza

JavaFX. Zaawansowane technologie Javy 2019

16) Wprowadzenie do raportowania Rave

Przygotowanie formularza do wypożyczenia filmu:

Przewodnik... Tworzenie Landing Page

Bazy danych raporty. 1. Przekopiuj na dysk F:\ bazę M5BIB.mdb z dysku wskazanego przez prowadzącego.

Dokumentacja do API Javy.

Enkapsulacja, dziedziczenie, polimorfizm

Klasy abstrakcyjne i interfejsy

Wprowadzanie danych organizacyjnych szkoły

Poznań Java User Group Java Server Faces. Wprowadzenie (Fakty i Mity)

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

Założenia projektu: Projekt ma zadanie pokazać praktyczne zastosowanie App Inventor 2, poprzez stworzenie prostej aplikacji do nauki słówek.

Wstęp 7 Rozdział 1. OpenOffice.ux.pl Writer środowisko pracy 9

Obliczanie opłaty elektronicznej za przejazd wybraną trasą (krok po kroku)

4. Budowa prostych formularzy, stany sesji, tworzenie przycisków

Baza danych. Program: Access 2007

Uruchom polecenie z menu Wstaw Wykres lub ikonę Kreator wykresów na Standardowym pasku narzędzi.

Tak przygotowane pliki należy umieścić w głównym folderze naszego programu. Klub IKS

Materiały oryginalne: ZAWWW-2st1.2-l11.tresc-1.0kolor.pdf. Materiały poprawione

Java Podstawy. Michał Bereta

Wspólne Zaawansowana tabela

UML a kod. C++, Java i C#

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

TP1 - TABELE PRZESTAWNE od A do Z

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

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

Systemy Rozproszone. Spis treści. Temat projektu: Regułowy system analizujacy logi. autorzy: Rafał Sadłowski, Sebastian Falkus, Michał Różycki

Podstawy Swing. Tomasz Borzyszkowski

Kolumna Zeszyt Komórka Wiersz Tabela arkusza Zakładki arkuszy

Plan. Raport. Tworzenie raportu z kreatora (1/3)

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

Layouty. Kilka layoutów

Programowanie w środowisku graficznym GUI

MS Excell 2007 Kurs podstawowy Filtrowanie raportu tabeli przestawnej

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

TRX Konsola dyspozytorska - instrukcja obsługi

Nowe notowania epromak Professional

Projekt aplikacji Tablica ogłoszeń w programie do tworzenia aplikacji mobilny App Inventor

Zaawansowane aplikacje WWW - laboratorium

Dynamiczne i wydajne tworzenie interfejsu. Piotr Michałkiewicz

BAZY DANYCH Panel sterujący

1 LINQ. Zaawansowane programowanie internetowe Instrukcja nr 1

Laboratorium 9 (Więcej Aktywności, w Androidzie)

Jak przygotować pliki gotowe do publikacji w sieci za pomocą DigitLabu?

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

Koncepcja systemu informatycznego realizującego w środowisku Oracle Spatial proces generalizacji modelu BDOT10 do postaci BDOT50

Sposób tworzenia tabeli przestawnej pokażę na przykładzie listy krajów z podstawowymi informacjami o nich.

Przewodnik użytkownika (instrukcja) AutoMagicTest

Transkrypt:

Rozkład jazdy: 1. GUI przedpotopowe era AWT i Swinga 2. Kilka słów na temat ewolucji SWT i JFace 3. Standard Widget przegląd komponentów 4. Układy i układziki, czyli Layout Managery 5. Viewery i Wizzardy (dozorcy i czarodzieje!)

1. Dawno, dawno temu istniała bestia LCD niszcząca ludzkie zbiory. 2. Pojawił się rycerz słońca i dał ludziom AWT. 3. Jednak AWT zbuntowało się przeciwko ludziom i zmieniło się w LCD. 4. Ponownie pojawił się rycerz słońca i obdarował ludzi Swingiem, który poskromił AWT.

1.Za górami, za lasami był zakon 3 liter, który postanowił pomóc ludziom walczącym z AWT oraz sobie w walce ze złym księciem Małegosoftu. 2. Zakonnicy przywołali z zaświatów nowego stwora SWT i jeźdźca JFace. 3. Ludzie się podzielili pomiędzy zwolenników potwora z zakonu i rycerza słońca. 4. Walka pomiędzy jednymi i drugimi trwa po dziś dzień.

Jest częścią platformy Eclipse Może z powodzeniem być wykorzystywane samodzielnie w miejscu Swinga.

Standard Widget Toolkit dostarcza kompletu komponentów prostych (np. przyciski) jak i złożonych (tabele, drzewa, listy). Większość komponentów, które powołujemy do życia potrzebuje przodka. Każdy komponent możemy stylizować przy pomocy stałych z klasy SWT. Większość komponentów

Standardowe Layout Managery w SWT 1. FillLayout skaluje wszystkie komponenty do jednej wielkości 2. RowLayout grupuje w kolumny bądź wiersze 3. GridLayout rozmieszcza w siatce 4. FormLayout układa komponenty absolutnie bądź relatywnie Pierwszych dwóch używa się sporadycznie. Standardowa siatka jest najpopularniejsza ale i najtrudniejsza w modyfikacji. Układ zarządzany przez FormLayout jest automatycznie skalowany. Ilość kodu, potrzebnego do pozycjonowania elementów jest w przypadku FormLayoutu o około 15% większa niż w przypadku siatki.

Rzut okiem na kod z siatki i formularza: Text area = new Text(shell, SWT.MULTI SWT.BORDER); GridLayout layout = new GridLayout(3, false); GridData data = new GridData(); data.horizontalspan = 2; data.heighthint = 90; data.widthhint = 205; area.settext("witamy!"); area.setlayoutdata(data); Text area = new Text(shell, SWT.MULTI SWT.BORDER); FormLayout layout = new FormLayout(); FormData data = new FormData(); data.left = new FormAttachment(description); // etykieta tekstowa data.right = new FormAttachment(100); data.top = new FormAttachment(field, 5); // pole wiersz wyzej tekstowe data.bottom = new FormAttachment(yes); // przycisk pod polem area.settext("witamy!"); area.setlayoutdata(data);

Nieformalna siatka, którą stworzyliśmy przy użyciu obiektów FormData. FormLayout skaluje elementy jeśli są one zadokowane w danej osi z obu stron. FormAttachment ma zasadniczo dwa konstruktory. Pierwszy pozycjonuje relatywnie, drugi absolutnie. new FormAttachment(description); // przypięcie danej strony do określonego komponentu new FormAttachment(100); // rozciągnięcie do 100% w danym kierunku Osie X oraz Y wskazują kierunki, względem których rosną wartości.

JFace to nadbudowa na SWT pozwalająca zmniejszyć liczbę kodu potrzebnego do uzyskania zamierzonego efektu. Jest to również pewnego rodzaju Swing dla SWT dostarczający implementacji MVC. Najczęściej używane komponenty to: 1. Okna dialogowe 2. JFace Viewer's 3. Akcje 4. Wizardy

Standardowy układ okna wraz z paskami narzędziowymi/statusem, menu itp. możemy stworzyć przy pomocy ApplicationWindow. Informujemy o tym w kontruktorze metodami: 1. addtoolbar 2. addcoolbar 3. addmenu 4. addstatusline ApplicationWindow po wywołaniu tych metod odwołuje się do domyślnych implementacji. Zmieniając je możemy dostosowywać okno do własnych potrzeb. Do dyspozycji mamy również standardowy zestaw dialogów.

Każdy Viewer wymaga dostarczenia implementacji 2 interfejsów: 1. IContentProvider dostarcza obiektów, które mają być wyświetlone 2. ILabelProvider określa etykiety tekstowe oraz ikony prezentowane przy obiektach zwróconych przez content providera Opcjonalnie możemy dostarczyć implementacji dwóch kolejnych interfejsów: 1. IViewSorter sortowanie elementów, które są wyświetlane 2. IViewFilter ograniczenie ilości wyświetlanych elementów

Stworzenie prostego TreeViewera: TreeViewer tree = new TreeViewer(form, SWT.SINGLE); tree.setlabelprovider(new NavigationTreeLabelProvider()); tree.setcontentprovider(new FilesystemContentProvider()); tree.setinput(new File(".")); public class NavigationTreeLabelProvider extends LabelProvider{ public String gettext(object element) { return ((File) element).getname(); } } Pozostałe Viewery tworzy się i konfiguruje w ten sam sposób. Istnieją różne wariacje tego komponentu np. TableTreeViewer, CheckboxTreeViewer. Podobnie sprawa ma się z ListViewerem.

Akcje to wydzielone fragmenty kodu, które mogą być wielokrotnie używane w celu podjęcia tej samej czynności w różnych miejscach. Akcja w rozumieniu JFace to implementacja interfejsu IAction. Jak w większości przypadków mamy domyślną implementację większości metod w klasie Action. Akcję możemy opisać tekstem bądź udekorować obrazkiem. Stworzona w ten sposób akcja może być używa w ten sam sposób przez MenuManagera (do budowania menu) czy też ToolBarManagera (do budowania paska narzędziowego).

Przy użyciu kreatorów możemy tworzyć długie klikalne sekwencje pytań. Implementacja nowego kreatora wymaga od nas implementacji interfejsów IWizard oraz IWizardPage. Pierwszy reprezentuje kreator, drugi pojedyńczy krok. Są domyślne implementacje Wizard oraz WizardPage. Każda strona może przeprowadzić walidację i decydować o tym czy proces może być zakończony. Domyślnie Wizard sprawdza czy wszystkie strony wyraziły zgodę na zakończenie prac. Rozbudowa kreatorów przebiega tak jak w przypadku ApplicationWindow nadpisujemy puste implementacje metod.

Jako bonus drag & drop. Jest zorganizowany podobnie jak w Swingu możemy obsługiwać różne formaty danych wynikowych. Kluczowe znaczenie mają dwie klasy 1. DragSource miejsce, z którego będziemy przenosić 2. DropTarget miejsce, na które ma trafić dany element Wpływ na przebieg procesu mamy przez dodawanie odpowiednich listenerów. Akceptowane typy danych docelowych określamy przez obiekty klasy Transfer (FileTransfer, RTFTransfer itp.).

Kilka słów na temat wad SWT i JFace 1. Stosunkowo mało dokumentacji (Swing ma więcej), tylko kilka książek. 2. Brak rozbudowanej społeczności (Swing ma więcej), ogranicza się do list dyskusyjnych. 3. Brak polskojęzycznych serwisów (ale tu ogólnie o Javie w polskiej sieci publikuje się mało) 4. Mało ofert pracy (chociaż są nieco lepiej płatne na podstawie itjobswatch.co.uk)

Dostępne pozycje książkowe to: 1. The Definitive Guide to SWT and JFACE (Apress) 2. SWT/JFace in Action (Maning) 3. Proffesional Java Native Interface with SWT/JFace (Wrox) 4. SWT: The Standard Widget Toolkit volume 1 (Addison-Wesley) 5. SWT: A developer's notebook (O'Reilly)

Może zanim się rozejdziemy mały flame? 1. Dlaczego nie tworzymy aplikacji desktopowych? 2. Czy jest to lepsze niż HTML? 3. Jakie problemy mogą powstać przy tradycyjnych desktopach? System.exit(0);