Grafikus felületek készítése 1.



Hasonló dokumentumok
Java programozási nyelv 8. rész Grafikus felhasználói felület

Java felhasználói felület

Grafikus felületek a programozó szempontjából grafikus elemek absztrakt reprezentációja az egyes elemek tulajdonságait leíró adatstruktúrák.

Adatbázis alapú rendszerek gyakorlat Adatbázis alapú alkalmazásfejlesztés Java, C# környezetben

Java VI. Egy kis kitérő: az UML. Osztály diagram. Általános Informatikai Tanszék Utolsó módosítás:

strings.xml res/values/strings.xml fájlban hozzuk létre a hiányzó string adatforrásainkat A jelenlegi helyett ez álljon: <resources> <string

Grafikus felhasználói felületek. Abstract Window Toolkit, a java.awt és java.awt.event csomagok

Két csomag elemeiből lehet a felületet elkészíteni: awt: heavy weight komponensek; swing: light weight komponensek (időben később).

libgdx alapok, első alkalmazás

Vizuális programozás gyakorlat

RIA Rich Internet Application

7. Előadás. Makrók alkalmazása. Salamon Júlia. Előadás I. éves mérnök hallgatók számára

Programozási technológia

Programozás BMEKOKAA146. Dr. Bécsi Tamás 8. előadás

Szoftvertechnológia alapjai Java előadások

Grafikus felhasználói felületek. Dr. Szendrei Rudolf Informatikai Kar Eötvös Loránd Tudományegyetem. Programozási technológia I. Dr.

Bánsághi Anna

C# osztályok. Krizsán Zoltán

Óraterv Iskolába járás Feladatlap

INFORMATIKAI ALAPISMERETEK

Entity Framework alapú adatbáziselérés

VI. Grafikus Java alkalmazások

Budapes( Műszaki és Gazdaságtudományi Egyetem Méréstechnika és Információs Rendszerek Tanszék. Eclipse Rich AJAX Pla0orm

Access adatbázis elérése OLE DB-n keresztül

Java felhasználói felület

Számítástechnika II. BMEKOKAA Előadás. Dr. Bécsi Tamás

3. Gyakorlat Ismerkedés a Java nyelvvel

Bánsághi Anna

Swing. (A javax.swing csomag)

Gate Control okostelefon-alkalmazás

II. év. Adatbázisok és számítógépek programozása

mynct v0.0.1 Maró verzió Kezelési leírás

KATONA ÉVA ANA 2.0 ADVANCED NETWORK ANALYSIS

Hasznos gyűjtemények:

Bonobo: A GNOME CORBA alapú komponens-megoldása Unixokra

Készítette:

Szövegszerkesztés Verzió: 0.051

Grafikus Qt programok írása segédeszközök nélkül

8,0 MP hátlapi, LED vakuval. - micro SD kártyaolvasó - 1db USB 2.0 a táblagépen - 2db USB 2.0 a billentyűzeten. - fényérzékelő - giroszkóp

Eseménykezelés Java környezetben, AWT alapok

Modell Alapú Szoftverfejlesztés Eclipse-szel

Objektumorientált programozás C# nyelven

Alap számológép alkalmazás

JAVA PROGRAMOZÁS 5.ELŐADÁS

Java és web programozás

Programozás III GRAFIKA RAJZOLÁS SWING FELÜLETEN RAJZOLÁS GRAFIKA HASZNÁLATA. Rajzolni az awt csomag Graphics osztályának metódusaival tudunk.

ARM Cortex magú mikrovezérlők

JAVA PROGRAMOZÁS 3.ELŐADÁS

Elemi alkalmazások fejlesztése IV. Adatbázis-kezelő GUI alkalmazás készítése 3. Összetett tábla karbantartása

Osztály és objektum fogalma

Programozási technikák Pál László. Sapientia EMTE, Csíkszereda, 2009/2010

OBJEKTUM ORIENTÁLT PROGRAMOZÁS JAVA NYELVEN. vizsgatételek

Programozás Delphiben

Agroinform 2.0. Piactér funkciók felsorolása. Tartalomjegyzék


Eclipse plug-ins, Rich Client Platform

MUNKAANYAG. Angyal Krisztián. Szövegszerkesztés. A követelménymodul megnevezése: Korszerű munkaszervezés

117. AA Megoldó Alfréd AA 117.

Eseményvezérelt alkalmazások fejlesztése II. A.NET keretrendszer és a C# programozási nyelv. Objektumorientált programozási nyelvek A Smalltalk nyelv

BME MOGI Gépészeti informatika 8.

Programtervezési minták (GEIAL517M) Jegyzőkönyv

INFORMATIKAI ALAPISMERETEK

KR TITKOSÍTÓ PROGRAM. Felhasználói leírás. v március 12.

PÉLDATÁR BEGYAKORLÓ FELADAT TÉRBELI FELADAT MEGOLDÁSA VÉGESELEM- MÓDSZERREL

Ismerkedés a Windows Explorer-rel

Objektumorientált programozás C# nyelven

Broadcast Service Widget

Kézikönyv EKÁER az abasban

PHP II. WEB technológiák. Tóth Zsolt. Miskolci Egyetem. Tóth Zsolt (Miskolci Egyetem) PHP II / 19

WINDOWS XP - A GRAFIKUS FELÜLET KEZELÉSE

Java Programozás 9. Gy: Java alapok. Adatkezelő 5.rész

eseményvezérelt megoldások Vizuális programozás 5. előadás

Java bevezet o Kab odi L aszl o Kab odi L aszl o Java bevezet o

Infokommunikáció (PF10IK511L) kérdései

Operációs rendszerek. Az X Window rendszer

Egységes és objektumközpontú adatbázis-kezelés (2. rész)

MVC Java EE Java EE Kliensek JavaBeanek Java EE komponensek Web-alkalmazások Fejlesztői környezet. Java Web technológiák

edia 2.2 Kézikönyv feladatfelvitelhez Diagnosztikus mérések fejlesztése Készítette: Molnár Gyöngyvér Papp Zoltán Makay Géza Ancsin Gábor

Farkas Gyula Szakkollégium Bit- és számtologatók. DirectX9 felhasználása számítógépes grafikában (bevezető egy primitív keretrendszer)

Villamosmérnöki szak Alkalmazott informatika mellék szakirány Laboratórium II. (VIAU5102) World Wide Web lapok készítése (Silabusz)

Adattárház automatizálási tapasztalatok a Generali Biztosítóban

Programozási technológia

Java programozási nyelv 6. rész Java a gyakorlatban

Dr. Pétery Kristóf: Excel 2007 feladatok és megoldások 2.

NeoCMS tartalommenedzselő szoftver leírása

Java Programozás 8. Gy: Java alapok. Adatkezelő 4.rész

NEPTUN_FDL, META. (Szűrések, dokumentáció) Budapest, 2001

Gate Control okostelefon-alkalmazás

Objektumorientált programozás Pál László. Sapientia EMTE, Csíkszereda, 2014/2015

OOP: Java 8.Gy: Abstract osztályok, interfészek

Az MS Access adatbázis-kezelő program

Entity Framework alapú adatbáziselérés 2

Oracle BI Administration Tool. Repository felépítése

Programozás 2., II. kötet Windows form alkalmazások

Rövid használati útmutató

Documentation. OTRS Business Solution 4 kézikönyv

Ubuntu Érettségi Remix Telepítési és beállítási leírás. Ágazati szakmai komplex távközlési ismeretek érettségihez

Szálkezelés. Melyik az a hívás, amelynek megtörténtekor már biztosak lehetünk a deadlock kialakulásában?

TopologyMaster Pro v0.93 Haszna lati utası ta s

Johanyák Zsolt Csaba: Grafikus felület programozása. Copyright 2008 Johanyák Zsolt Csaba

Átírás:

Grafikus felületek készítése 1. SWT Budapes( Műszaki és Gazdaságtudományi Egyetem Méréstechnika és Információs Rendszerek Tanszék

Grafikus felületek fejlesztése Java grafikus toolkitek o AWT Na>v widgetek Csak minden plaeormon elérhető widgetek o Swing Rajzolt widgetek Bármely plaeormon elérhető widgetek Bővíthető 2

Problémák Nem úgy néz ki, mint a Word probléma o Nem veszi át az ablakkezelő look- and- feel beállításait o Gyakran a nyelvi beállításokat sem o Cél: mindenhol ugyanúgy néz ki AWT o alacsony szintű Swing o memóriafogyasztás o teljesítményproblémák o mára (Java 6.0) ez elfogadható 3

Grafikus felületek fejlesztése SWT Standard Widget Toolkit o IBM fejlesztés o Swing helye` o Eclipse projekt indulásakor o Előzmény o Cél Na>v GUI komponensek elérése Smalltalk nyelven Na>v elemekből felépíte` GUI keretrendszer Mindenhol na>van néz ki 4

SWT Standard Widget Toolkit Na>v - PlaEorm API- t használja o Gyors o Look- and- feel a plaeormé Minden szolgáltatás elérhető OLE, drag- n- drop, Portolni kell Eltérő megjelenés Képek forrása: h`p://eclipse.org/swt 5

Grafikus felület programozási modellje Felhasználói beavatkozás Eseménysor Ablak SWT- ben: Shell Esemény Esemény Esemény SWT: Display objektum 6

Eseményhurok SWT eseményhurok o Explicit - az alkalmazásban le kell kódolni o Egy ciklusban bejövő események olvasása események feldolgozása o Ciklus vége: az alkalmazás véget ért (főprogram bezárva) o Nagyon hasonlít a Windows API programozáshoz 7

! SWT eseményhurok public static void main(string [] args) {! " "Display display = new Display();! " "final Shell shell = new Shell(display);! " "shell.setsize(400, 400);! " "shell.open();! " "while (!shell.isdisposed()) {! " " "if (!display.readanddispatch())! " " " "display.sleep();! " "}! " "display.dispose();! "} 8

Mi az esemény? Eseménykezelés o Valami, amire reagálni kell Felhasználói Egérmozgatás Billentyűzetlenyomás Rendszer Telik az idő 9

Eseménykezelés Eseményfigyelők felvétele o Generikus (>pus nélküli) bármilyen widgetre o Típusos Billentyűzet Egér Mulstouch 10

SWT widgetek Viszonylag kicsi hierarchia o Pl. Swinghez képest o Egy osztály többféle widgetet is leír! Választás: s>lusbitek segítségével Modellobjektumok csatolása o getdata()/setdata() metódusok 11

Widget s>lusbitek További formátumbeállítások o Pl. Bu`on- >CheckBox Konstruktorban kell megadni o Futás közben nem lehet megváltoztatni o Widget >pustól függ az engedélyeze` s>lusok halmaza Technika o Java 1.4 - > nincs enum o Helye`e int konstansok SWT osztályban Több s>lusbit megadása bitenkéns vagy művele`el: SWT.SEPARATOR SWT.HORIZONTAL 12

Kézi példányosítás o Nincs factory o Tartalmazási hierarchia Kézi eltakarítás SWT widgetek o Nincs garbage collecson! o dispose() kézi hívása Hierarchia egyben törlődik DE: csak általunk példányosíto` widgetre/erőforrásra 13

Bu`on Gyakori widgetek o Gombok, választógombok, rádiógombok Label o Címkék Text o Beviteli mezők StyledText o Rajzolt beviteli mező (ld. Eclipse editorok) 14

Composite Gyakori widgetek o Más widgetek tárolása o Widgethez elrendezés adható meg (később) Canvas o Kézi rajzolás Menu, Toolbar o Eszköztárak, menük List, Table o Listák, táblázatok megadása 15

Gyakori widgetek És még sok más: h`p://eclipse.org/swt/widgets/ 16

További widgetek Nebula projekt h`p://eclipse.org/nebula/ Dátum/idő kezelés Forma`edText 17

További widgetek Nebula projekt Gan` diagram Galéria 18

Dialógus ablakok Fajtái o MessageBox- üzenetek o ColorDialog szín- kiválasztás o DirectoryDialog - könyvtárfa o FileDialog fájl kiválasztás, mentés o FontDialog betű>pus- választás o PrintDialog nyomtatás o Nem Widget alosztályok! Operációs rendszer beépíte` dialógusai o Specifikus dialógus tulajdonságok is Pl. SWT.SHEET 19

Dialógus ablakok Fajtái o MessageBox- üzenetek o ColorDialog szín- kiválasztás o DirectoryDialog - könyvtárfa o FileDialog fájl kiválasztás, mentés o FontDialog betű>pus- választás o PrintDialog nyomtatás o Nem Widget alosztályok! Operációs rendszer beépíte` dialógusai o Specifikus dialógus tulajdonságok is Pl. SWT.SHEET 20

21 ÖsszeteB űrlapok készítése Layoutok

Összete` űrlapok Hány widgetet tartalmaz az ablak? 22

Összete` űrlapok 23

Összete` űrlapok 24

Minden widgetnek o Egy szülője van o Kivétel: ablak Composite widgetek Tartalmazási hierarchia o Más widgeteket tartalmazhatnak o Elrendezés megadható 25

Elrendezés (Layout) Tartalom és elrendezés elválasztása o Elemek elrendezése o Rela>v elrendezés o Köves a konténer méretének változását Közös ős: Layout o Nincs publikus API - nem hívjuk meg 26

Layout Layout AWT (Gyökerek) o Elemek elrendezése o Automaskus módszer A programozók elégedetlenek o Eddig: grafikus UI builder o Erőforrás fájlok o Most: kódolás 27

Layout - SWT Elrendezések használhatóak o FillLayout o RowLayout o GridLayout o FormLayout o StackLayout Vagy alapértelmeze` elrendezés o X- Y koordináták megadása Fontos o Vagy koordinátákat, vagy layoutot meg kell adni! 28

FillLayout Vízszintes/függőleges irányban egymás melle elemek kitölsk a composite- ot o Az elemek saját méretét figyelmen kívül hagyja! Primi>v elrendezés Használható egymásba ágyazo` composite elemek esetén

RowLayout Hasonló a FillLayout- hoz o Sorokba vagy oszlopokba rendezi az elemeket o Elemek méretét figyelembe veszi DE: minden elemnek egyedi mérete lehet RowData (LayoutData) : height, width o Az elemek méretét adja meg Az elemeket egyenletesen osztja el a meglevő helyen

GridLayout Grid (táblázat) jellegű elrendezés o Oszlopok száma megadható Ada`agok o horizontalspacing elemek közö szünet (pixel) o makecolumnsequalwidth egyenlőek az oszlopok? o marginheight - margó magassága felül és alul o marginwidth- margó szélessége jobb- és baloldalt o numcolumns - oszlopok száma o verscalspacing elemek közö szünet

FormLayout A legkomplexebb layout A Data melle` egy A`achment osztályt is használ o Egy Data 4 a`achmentet tartalmazhat (négy oldalhoz) o Az a`achment a méretet adja meg o Alapképlet: y=ax+b (y magasság, x szélesség) o a : a vonatkozó widgethez képess arány, b offszet

FormLayout A legkomplexebb layout Abszolút pozíció a bal A Data melle` egy A`achment felső sarokhoz osztályt is használ képest o Egy Data 4 a`achmentet tartalmazhat (négy oldalhoz) o Az a`achment a méretet adja meg o Alapképlet: y=ax+b (y magasság, x szélesség) o a : a vonatkozó widgethez képess arány, b offszet

FormLayout A legkomplexebb layout A Data melle` egy A`achment osztályt is használ o Egy Data 4 a`achmentet tartalmazhat (négy oldalhoz) o Az a`achment a méretet adja meg Második widgethez képest jobbra és lefelé o Alapképlet: y=ax+b (y magasság, x szélesség) o a : a vonatkozó widgethez képess arány, b offszet

StackLayout Minden elem azonos méretű, azonos helyen van Csak a legfelső látszik o StackLayout.topControl o Ha átállítjuk, a konténerre meg kell hívni a layout() függvényt, hogy aktualizálódjon a GUI Megadható a margó o marginheight o marginwidth

Sokféle van Layout Sajátot is készíthetünk a Layout osztály örököltetésével Nem kell használni o Widget.setBound(x,y,w,h) Abszolút méret megadása

Példa alkalmazás private void createsshell() {! "sshell = new Shell();! "sshell.settext("shell");! "sshell.setlayout(new GridLayout());! "sshell.setsize(new Point(90,127));! "label1 = new Label(sShell, SWT.NONE);! "label1.settext("some Text");! "label2 = new Label(sShell, SWT.SEPARATOR SWT.HORIZONTAL);! "label2.settext("label");! "checkbox = new Button(sShell, SWT.CHECK);! "checkbox.settext("check");! "button = new Button(sShell, SWT.NONE);! "button.settext("pushme");! } 37

Példa alkalmazás private void createsshell() {! "sshell = new Shell();! "sshell.settext("shell");! "sshell.setlayout(new GridLayout());! "sshell.setsize(new Point(90,127));! "label1 = new Label(sShell, SWT.NONE);! "label1.settext("some Text");! Layout beállítása "label2 = new Label(sShell, SWT.SEPARATOR SWT.HORIZONTAL);! "label2.settext("label");! "checkbox = new Button(sShell, SWT.CHECK);! "checkbox.settext("check");! "button = new Button(sShell, SWT.NONE);! "button.settext("pushme");! } 38

Példa alkalmazás private void createsshell() {! "sshell = new Shell();! Címke "sshell.settext("shell");! "sshell.setlayout(new GridLayout());! felvétele "sshell.setsize(new Point(90,127));! "label1 = new Label(sShell, SWT.NONE);! "label1.settext("some Text");! "label2 = new Label(sShell, SWT.SEPARATOR SWT.HORIZONTAL);! "label2.settext("label");! "checkbox = new Button(sShell, SWT.CHECK);! "checkbox.settext("check");! "button = new Button(sShell, SWT.NONE);! "button.settext("pushme");! } 39

Példa alkalmazás private void createsshell() {! "sshell = new Shell();! "sshell.settext("shell");! "sshell.setlayout(new GridLayout());! Címke "sshell.setsize(new Point(90,127));! SEPARATOR "label1 = new Label(sShell, SWT.NONE);! s>lusbi`el "label1.settext("some Text");! "label2 = new Label(sShell, SWT.SEPARATOR SWT.HORIZONTAL);! "label2.settext("label");! "checkbox = new Button(sShell, SWT.CHECK);! "checkbox.settext("check");! "button = new Button(sShell, SWT.NONE);! "button.settext("pushme");! } 40

Példa alkalmazás private void createsshell() {! "sshell = new Shell();! "sshell.settext("shell");! "sshell.setlayout(new GridLayout());! "sshell.setsize(new Point(90,127));! "label1 = new Label(sShell, SWT.NONE);! Checkbox "label1.settext("some Text");! "label2 = new Label(sShell, SWT.SEPARATOR CHECK SWT.HORIZONTAL);! s>lusbit "label2.settext("label");! "checkbox = new Button(sShell, SWT.CHECK);! "checkbox.settext("check");! "button = new Button(sShell, SWT.NONE);! "button.settext("pushme");! } 41

Példa alkalmazás private void createsshell() {! "sshell = new Shell();! "sshell.settext("shell");! "sshell.setlayout(new GridLayout());! "sshell.setsize(new Point(90,127));! "label1 = new Label(sShell, SWT.NONE);! "label1.settext("some Text");! "label2 = new Label(sShell, SWT.SEPARATOR SWT.HORIZONTAL);! "label2.settext("label");! Egyszerű "checkbox = new Button(sShell, SWT.CHECK);! nyomógomb "checkbox.settext("check");! "button = new Button(sShell, SWT.NONE);! "button.settext("pushme");! } 42

Példa alkalmazás private void createsshell() {! "sshell = new Shell();! "sshell.settext("shell");! "sshell.setlayout(new GridLayout());! "sshell.setsize(new Point(90,127));! "label1 = new Label(sShell, SWT.NONE);! "label1.settext("some Text");! "label2 = new Label(sShell, SWT.SEPARATOR SWT.HORIZONTAL);! "label2.settext("label");! "checkbox = new Button(sShell, SWT.CHECK);! "checkbox.settext("check");! "button = new Button(sShell, SWT.NONE);! "button.settext("pushme");! } 43

Grafikus felületek készítése 44

Felhasználói felület grafikus tervezése Alapvető elvárások o Támogassa közvetlen szerkesztést o Használhassuk a Layoutokat o Forrás és grafikus felület szerkesztés párhuzamosan Egyre jobb támogatás o Többféle eszköz o Eclipse WindowBuilder az egyik legjobb eszköz

Történet WindowBuilder projekt o Instansasons - > Google - > Eclipse Működés o Roundtrip engineering o SWT, JFace, Forms API o Eclipse Workbench o DE: memóriaigényes Tipp: kapcsoljuk ki, hogy ő legyen az alapértelmeze` Java szerkesztő o DE: kisebb bugok 46

WindowBuilder projekt 47

GUI fejlesztőeszköz Használjunk automaskus elrendezést, ha lehet o Igazítási hibák ellen például Forrás: h`p://uxma`ers.com/mt/archives/2009/02/reviewing- user- interfaces.php 48

Egyszerű felület 49

SWT - Összefoglalás Na>v, grafikus keretrendszer o Gyors o Egyszerű Különböző formelemek definiálására o ÖsszeteB űrlapok o Dialógusok o Menük o Rajzolás o Nyomtatás o 50

További segédletek Understanding Layout in SWT o h`p://www.eclipse.org/arscles/arscle.php? file=arscle- Understanding- Layouts/index.html o Leírás SWT layoutokhoz User Interface Guidelines Eclipsepedia o h`p://wiki.eclipse.org/user_interface_guidelines SWT Snippets: o h`p://www.eclipse.org/swt/snippets/ o Csoportosíto` minták SWT felületek kódolásához 51