SWT & MigLayout. Alternativy Java GUI v praxi. Pavel Janečka & Tomáš Chlouba. červen 2011

Podobné dokumenty
Aplikace s grafickým uživatelským rozhraním

GUI - úvod. V této kapitole si ukážeme návod, jak vytvořit jednoduchou grafickou aplikaci a umístit do ní některé další grafické prvky.

Programátorská příručka

Při studiu tohoto bloku se předpokládá, že student je zvládá základy programování v jazyce Java s využitím vývojového prostředí NetBeans.

GUI v Javě. GUI v Javě GUI komponenty a kontejnery Dialogová okna Události a obsluha událostí z GUI

GUI v Javě. Jiří Vokřínek. Katedra počítačů Fakulta elektrotechnická České vysoké učení technické v Praze. Přednáška 5 B0B36PJV Programování v JAVA

GUI. JavaFX. Java UI, letní semestr 2017/2018 1

Google Web Toolkit. Martin Šurkovský, SUR března Katedra informatiky

8. GRAFICKÉ UŽIVATELSKÉ ROZHRANÍ

GUI v Javě. Jiří Vokřínek. Katedra počítačů Fakulta elektrotechnická České vysoké učení technické v Praze. Přednáška 5 B0B36PJV Programování v JAVA

Klíčová slova: OOP, konstruktor, destruktor, třída, objekt, atribut, metoda

Uživatelská rozhraní 10. cvičení. Martin Němec A

Grafické uživatelské rozhraní v Javě. A0B36PR2-Programování 2 Fakulta elektrotechnická České vysoké učení technické

Tvorba grafického uživatelského rozhraní v jazyce Java

Multiplatformní GUI toolkity

Grafické uživatelské rozhraní v Javě. A0B36PR2-Programování 2 Fakulta elektrotechnická České vysoké učení technické

Diplomová práce Plugin do Eclipse pro tvorbu GUI s konfigurovatelným generováním zdrojového kódu

Bridge. Známý jako. Účel. Použitelnost. Handle/Body

Jazyk C# (seminář 9)

1 - Úvod do platformy.net. IW5 - Programování v.net a C#

Michal Krátký. Úvod do programovacích jazyků (Java), 2006/2007

Obrázek 6.14: Prohlížec nápovedy

Abstract Factory úvod

úvod Historie operačních systémů

Java - výjimky. private void vstup() throws IOException {... }

Část I Příklad - Generické typy, iterátor

GUI v Javě. Jan Faigl. Katedra počítačů Fakulta elektrotechnická České vysoké učení technické v Praze. Přednáška 3 A0B36PR2 Programování 2

Část I Příklad - Generické typy, iterátor

JAVA GUI Java, zimní semestr

Tvorba grafického uživatelského rozhraní v BlueJ

ŠKOLENÍ PROGRAMOVACÍHO JAZYKA JAVA JAVA - ZÁKLADY

Seznámení s AWT: práce s okny, grafikou a textem

Java - Kresba. 2/28/11 1/8 Java - kresba

Michal Krátký. Úvod do programovacích jazyků (Java), 2006/2007

GUI v Javě. Jan Faigl. Katedra počítačů Fakulta elektrotechnická České vysoké učení technické v Praze. Přednáška 3 A0B36PR2 Programování 2

Java pro programátory.net

User manual SŘHV Online WEB interface for CUSTOMERS June 2017 version 14 VÍTKOVICE STEEL, a.s. vitkovicesteel.com

První kapitola úvod do problematiky

Tvorba www-stránek. Příkazy jazyka HTML. Budeme pracovat následovně: Základní struktura webové stránky. Příkazy sekce HEAD

Seznámení s prostředím dot.net Framework

MATURITNÍ PRÁCE dokumentace

Integrace OpenOffice.org a Javy. CZJUG, , Robert Vojta

Jalapeño: pekelně ostrá Java persistence v Caché. Daniel Kutáč Senior Sales Engineer

Java pro programátory.net

GUI v Javě (připomínka) Návrhář GUI Příklad aplikace MVC Model-View-Controller Události Vnitřní třídy. MVC Model-View-Controller

Parametrizované třídy Generics generické třídy. JDK zavádí mimo jiné tzv. parametrizované třídy - generics

VIII. Seminář Java VIII p.1/36

monolitická vrstvená virtuální počítač / stroj modulární struktura Klient server struktura

Vytvořil Institut biostatistiky a analýz, Masarykova univerzita J. Jarkovský, L. Dušek, M. Cvanová. 5. Statistica

Servlety a JSP. Petr Adámek, petr.adamek@ibacz.eu

Tvorba webových stránek

1 Návod na instalaci prostředí LeJOS-NXJ a přehrání firmwaru NXT kostky

BARTECH INVENTURA HIM BARTECH. Řešení inventarizace hmotného majetku. BARTECH, s.r.o. Velkomoravská 527/33, Hodonín,

Úvod do programovacího jazyka Python

KMI / TMA Tvorba mobilních aplikací

GUI. Systémová integrace pro desktopové aplikace

Základy informatiky. Operační systémy

Uživatelská příručka k aplikaci Dell Display Manager

KMI / TMA Tvorba mobilních aplikací. 2. seminář ZS 2016/2017 Středa 13:15-15:45

Java GUI události. Událostmi řízené programování. Zpracování = obsluha událostí

Obsah přednášky. GUI v Javě a událostmi řízené programování. Základní prvky grafického rozhraní. Základní komponenty.

25. listopadu 2014, Brno Připravil: David Procházka. Qt a QML. Programovací jazyk C++

Začínáme s vývojem pro Android

Android 100% Java telefon. Petr Musil

Úvod do programovacího jazyka Python

HTML Hypertext Markup Language

Úvod. Únor Fakulta informačních technologií VUT. Radek Kočí Seminář Java Úvod 1/ 23

Úvod do JavaFX RICHARD LIPKA

GUI v Javě a událostmi řízené programování

Formy komunikace s knihovnami

Obsah přednášky. GUI v Javě a událostmi řízené programování. Základní prvky grafického rozhraní. Základní komponenty.

Observer. Klasifikace. Alias. Smysl. Potřeba sledování změn objektu a notifikace. Obdoba systému událostí (C#, Java) vlastními prostředky

Automatický rezervační systém. Bc. Jan Búda

GUI v Javě a událostmi řízené programování

Co je Symantec pcanywhere 12.0? Hlavní výhody Snadné a bezpečné vzdálené připojení Hodnota Důvěra

GUI v Javě a událostmi řízené programování

3 Vývojová prostředí, základní prvky jazyka Java, konvence jazyka Java

SÁM O SOBĚ DOKÁŽE POČÍTAČ DĚLAT JEN O MÁLO VÍC NEŽ TO, ŽE PO ZAPNUTÍ, PODOBNĚ JAKO KOJENEC PO PROBUZENÍ, CHCE JÍST.

Chain of responsibility

Operační systémy (OS)

Apache Cordova (PhoneGap 3)

KNIHOVNA QT4, PROSTŘEDÍ QTCREATOR A MOŽNOSTI JEJICH VYUŽITÍ

VÝUKOVÝ MATERIÁL. Bratislavská 2166, Varnsdorf, IČO: tel Číslo projektu

O projektu Nasazení OpenOffice.org v praxi

Programování v Javě I. Leden 2008

Embedded vývoj v Clutteru a Mx

Komponenty v.net. Obsah přednášky

IT ESS II. 1. Operating Systém Fundamentals

Karel Bittner HUMUSOFT s.r.o. HUMUSOFT s.r.o.

Jazyk C# (seminář 7)

O projektu OpenOffice.org a IBM OS/2 OS/2 a Open Source

Jazyk C# (seminář 6)

Přehled základních html tagů

Programování v Javě I. Únor 2009

Uživatelská příručka k aplikaci Dell Display Manager

Úvod Seznámení s předmětem Co je.net Vlastnosti.NET Konec. Programování v C# Úvodní slovo 1 / 25

CSS Stylování stránek. Zpracoval: Petr Lasák

UJO Framework. revoluční architektura beans. verze

Transkript:

SWT & MigLayout Alternativy Java GUI v praxi Pavel Janečka & Tomáš Chlouba červen 2011

SWT SWT & MigLayout Historie Komponenty a události Vývoj aplikací a ukázky MigLayout Java Layout Managery Ukázka použití a vlastnosti MigLayoutu Pokročilý layout pomocí SWT & MigLayout

Standard Widget Toolkit Open-source wrapper nativních knihoven operačního systému Definuje společné rozhraní pro všechny podporované platformy s využitím nativních komponent Alternativa k lightweight knihovně Swing

SWT ~ Historie JDK 1.0 AWT (Abstract Window Toolkit) 1995, heavyweight komponenty JDK 1.2 - Swing 1997, vykreslování kompletně v jazyce Java SWT původně pro jazyk Smalltalk 1993, otevření vývoje IDE Eclipse (dříve VisualAge) IBM vyžadovala native look and feel

SWT ~ Komponenty a události Browser, Button, Canvas, Caret, Combo, Composite, CoolBar, DateTime, ExpandBar, Group, Label, Link, List, Menu, ProgressBar, Sash, Scale, ScrollBar, Shell, Slider, Spinner, TabFolder, Table, Text, ToolBar, Tree Activate, Deactivate, Arm, Close, DefaultSelection, Dispose, DragDetect, Widgets, Snippets, Examples, Docs, FAQ,

SWT ~ Design a look and feel Cíle SWT Vysoký výkon Nativní vzhled Vysoká integrace do systému Menší možnosti než Swing SWT neimplementuje MVC JFace projekt (Eclipse) DWT, SwingWT, SWTSwing

SWT ~ Vývoj aplikací Z důvodu vazby na nativní knihovny nedovoluje SWT dědění komponent FAQ - Why can't I subclass SWT widgets like Button and Table? SWT neodesílá programově vyvolané události Single-threaded UI model FAQ - Why do I get the error "org.eclipse.swt.swtexception: Invalid thread access"? Nastavení komponent pomocí bitového součtu

SWT ~ Vývoj aplikací Nutnost ruční dealokace Metoda.dispose() Hlavně z důvodu využívání nativních objektů V praxi pouze obrázky, barvy a fonty Složitější tvorba vlastních komponent Potomci objektů Canvas či Composite Metoda dispose PaintListener, ControlListener, EventListener

SWT ~ Vývoj aplikací Komponenty neobsahují standardně přednastavený layout manager Každé komponentě představující kontejner musí být explicitně nastaven vybraný manager Komponenty se jinak vůbec nezobrazují FillLayout, RowLayout, GridLayout, FormLayout Understanding Layouts in SWT http://www.eclipse.org/articles/article.php?file=article-understanding-layouts/index.html

SWT ~ Vývoj aplikací Při vytváření instance komponenty nutná znalost parenta Obsluha layout manažerů void setlayoutdata(object layoutdata) Podporované platformy Windows (Win32, WPF), Linux, Solaris 10, HPUX, AIX (GTK 2), Mac OSX (Cocoa), Pocket PC (Windows CE)

SWT ~ Vývoj aplikací Hello world public SWTHelloWorldApp() { Display display = new Display(); Shell shell = new Shell(display, SWT.CLOSE shell.setlayout(new FillLayout(SWT.VERTIC shell.settext("hello world application"); shell.setsize(400, 300); Label lblhello = new Label(shell, SWT.CEN

SWT ~ Vývoj aplikací Tvorba vlastní komponenty public class OurOwnSWTComponent extend private GC gc = null; private int width = 0; private int height = 0; private Color bgcolor = null; private Color fgcolor = null; private Font fnttext = new Font(this.getDis

Standard Widget Toolkit Java wrapper knihoven uživatelského rozhraní různých operačních systémů Výhody Rychlost a paměťová nenáročnost! Nativní vzhled aplikací Bitový součin pro nastavení komponent Licence (Eclipse Public Licence) Komunita

Standard Widget Toolkit Nevýhody Dodatečné knihovny Různé platformy, x64 problém Platformě závislé bugy Tabulka, browser (Windows) Jiný přístup Nelze přímo stáhnout JavaDoc http://paul.luminos.nl/update/485

Layout Managery v Javě Slouží k tvorbě GUI Ruční tvorba náročná a nepřehledná Složité GUI realizovatelné pouze pomocí vnořování komponent s různými LM Malá změna v kódu má velký vliv na vzhled Co se stane, když změním velikost okna?

Layout Managery v Javě Swing Layout Managery BorderLayout, FlowLayout GridLayout, GridBagLayout BoxLayout, SpringLayout

MigLayout Autorem Mikael Grev Alternativa klasických layout managerů bez nutnosti používat vnořování komponent Proč MigLayout? miglayout.com Quick Start, tutoriály

MigLayout ~ ukázka Jednoduchý layout v MigLayoutu x Swing public class MiGExample { private JButton btok, btcancel; private JTextField tffirstname, tflastname, private JLabel lbfirstname, lblastname, lb public MiGExample() { JFrame frmwindow = new JFrame(); JPanel pnwin = new JPanel(new MigLayou

MigLayout ~ constraints Constraints pro komponentu nastavujeme při přidávání komponenty wrap zalomení řádku span slučování buněk push doplnění mezery split rozdělení buněk cell absolutní pozicování

MigLayout ~ constraints Constraints můžeme nastavit pro celý layout, jednotlivé řádky nebo sloupce Zalamování řádků, mezery, rozměry, zarovnání, insets MigLayout layout = new MigLayout( "", // layout "[][]10[]", // sloupce "[]10[]"); // řádky

MigLayout ~ rozměry Rozměry komponent můžeme nastavit individuálně pro jednotlivé komponenty Možnost nastavit minimum, preferred a maximum velikost pro Swing, preferred pro SWT width (w), height (h),! min, pref, max

MigLayout ~ zarovnání Komponenty v buňkách je možné zarovnat v rámci buňky, pokud kolem nich je volné místo (align) left, right, center Dokovat komponenty je možné na čtyři strany okna, dokované komponenty jsou vyjmuty ze základního layoutu (dock) north, south, east, west

MigLayout ~ doplnění Komponentám je možné nastavit automatické obsazení celé buňky grow, shrink Debug mód při zobrazení komponent, díky kterému je přehledně zobrazeno jejich rozložení debug NetBeans plug-in

MigLayout ~ benchmark Jednoduchý benchmark SWT & Swing Swing Java Version: 1.6.0_23 Look & Feel: The Microsoft Windows Look and Feel Time to Show: 449 millis. Benchmark Run Time: 14952 millis. Average Run Time: 747 millis (20 runs). SWT (x64) Java Version: 1.6.0_23 Time to Show: 401 millis. Benchmark Run Time: 64391 millis. Average Run Time: 3219 millis (20 runs). SWT (x32) Java Version: 1.6.0_23 Time to Show: 406 millis. Benchmark Run Time: 57526 millis. Average Run Time: 2876 millis (20 runs). Další výsledky http://www.javalobby.org/java/forums/t78884.html

SWT & MigLayout wrap split wrap split 3, flowy align center split 5, flowy, sg btns, center wrap span 2, wrap, growx split 3, span growx, dock south

SWT & MigLayout Jste připraveni vyzkoušet alternativy Java GUI? Pavel Janečka & Tomáš Chlouba duben 2011

SWT & MigLayout ~ Zdroje Eclipse Foundation. SWT Home [online]. 2005 [cit. 2011-04-25]. SWT: The Standard Widget Toolkit. Dostupné z WWW: http://www.eclipse.org/swt/ MiG InfoCom AB. MigLayout [online]. 2007 [cit. 2011-04-25]. MigLayout - The Java Layout Manager for Swing, SWT. Dostupné z WWW: http://www.miglayout.com/.