JAVA PROGRAMOZÁS 6.ELŐADÁS



Hasonló dokumentumok
Dr. Iszály György Barna

JAVA PROGRAMOZÁS 5.ELŐADÁS

I. Szakmai törzsanyag

Szoftvertechnológia alapjai Java előadások

Gábor Dénes Főiskola (IAI) Programozási technológia (Java) - II. / 1

JAVA PROGRAMOZÁS 3.ELŐADÁS

A Java nyelv. Dialógus ablakok. Elek Tibor

Programozási technológia

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.

Programozási technológia

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

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).

Programozási technológia I. programból! A Gomb4 megoldásból induljunk ki!

Java Programozás 11. Ea: MVC modell

Swing GUI készítése NetBeans IDE segítségével

Swing. (A javax.swing csomag)

JAVA PROGRAMOZÁS 2.ELŐADÁS

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

JAVA PROGRAMOZÁS 4.ELŐADÁS

VII. Appletek, grafika

Java Programozás 4. Gy: Java GUI. Tipper, MVC kalkulátor

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.

- Alkalmazásfejlesztési szemlélet megismerése - Java GUI készítés bemutatása Swing-ben - Órai feladat megoldása

Java felhasználói felület

JAVA PROGRAMOZÁS 8.ELŐADÁS

Szakdolgozat. Mikó Sándor

Java felhasználói felület

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

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

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

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

Grafikus felhasználói felületek, eseménykezelés

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

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

Java Programozás 6. Gy: Java alapok. Adatkezelő 2.rész

Alkalmazásfejlesztési technológia. Vizsgakövetelmények. 1. Megjelenítési technikák. Magasabb szintű komponensek. Feladat - RendererTeszt

Objektumok és osztályok. Az objektumorientált programozás alapjai. Rajzolás tollal, festés ecsettel. A koordinátarendszer

VI. Grafikus Java alkalmazások

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

Java Programozás 7. Gy: Java alapok. Adatkezelő 3.rész

Java felhasználói felület

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

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

Java felhasználói felület

Objektumorientált programozás C# nyelven

ESEMÉNY VEZÉRELT ALKALMAZÁSOK FEJLESZTÉSE I. Bevezetés. Készítette: Gregorics Tibor

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

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

Java Programozás 8. Ea: GUI. Graphical User Interface

Java grafikai lehetőségek

Java Programozás 3. Gy: Java GUI. Swing, AWT

RAJZ2. vezetett gyakorlat

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

Programozás BMEKOKAA146. Dr. Bécsi Tamás 10. Előadás

Dr. Pál László, Sapientia EMTE, Csíkszereda WEB PROGRAMOZÁS 2.ELŐADÁS. Objektumorientált programozás

9. óra operációs rendszerek. Grafikus operációs rendszer

Objektumorientált programozás C# nyelven

Interfészek. PPT 2007/2008 tavasz.

Szakdolgozat. Készítette: Tuska Gábor

DKÜ ZRT. A Portál rendszer felületének általános bemutatása. Felhasználói útmutató. Támogatott böngészők. Felületek felépítése. Információs kártyák

SZÁMÍTÓGÉPES PROBLÉMAMEGOLDÁS

ZH mintapélda. Feladat. Felület

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

Grafikus felhasználói felület (GUI) létrehozása A GUI jelentése Egy egyszerű GUI mintaalkalmazás létrehozása

Széchenyi István Egyetem. Programozás III. Varjasi Norbert

Java felhasználói felület

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

A szerzõrõl... xi Bevezetés... xiii

1. Mi a fejállományok szerepe C és C++ nyelvben és hogyan használjuk őket? 2. Milyen alapvető változókat használhatunk a C és C++ nyelvben?

VISUAL BASIC ALAPISMERETEK

Java felhasználói felület

Felhasználói Kézikönyv

Kivételkezelés, beágyazott osztályok. Nyolcadik gyakorlat

JUnit. JUnit használata. IDE támogatás. Parancssori használat. Teszt készítése. Teszt készítése

Felhasználói segédlet a Scopus adatbázis használatához

A dokumentáció felépítése

JAVA SE/ME tanfolyam tematika

A feladatok megoldásához felhasználandó osztályok leírásait az alábbi URL-en találja meg:

Készítette: Gál Tamás. A tananyag programozott változata itt érhető el: Webfejlesztés

JavaServer Pages (JSP) (folytatás)

Visual C++ osztály készítése, adattagok, és metódusok, láthatóság, konstruktor, destruktor. Objektum létrehozása, használata, öröklés.

Programozási nyelvek Java

BME MOGI Gépészeti informatika 14.

Java és web programozás

SDI ALKALMAZÁS I. Workspace / ResourceView / Toolbar / IDR_MAINFRAME. Workspace / ResourceView / Menu / IDR_MAINFRAME

A gyakorlat során az alábbi ábrán látható négy entitáshoz kapcsolódó adatbevitelt fogjuk megoldani.

ELTE SAP Excellence Center Oktatóanyag 1

RAJZ1. vezetett gyakorlat

Concurrency in Swing

1. Tesztlap: Programablakok

Java programozási nyelv 4. rész Osztályok II.

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

BME MOGI Gépészeti informatika 8.

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

Programozási nyelvek Java

Felhasználói segédlet a Scopus adatbázis használatához

1. Alapok. Programozás II

Kézikönyv. Felhasználói regiszter

Számítógépes grafika

Átírás:

Dr. Pál László, Sapientia EMTE, Csíkszereda JAVA PROGRAMOZÁS 6.ELŐADÁS 2014-2015 tavasz Swing komponensek; Grafika; Elemi események

2 Swing komponensek

Swing konstansok SwingConstants 3 interfész Általános konstansokat deklarál Mindegyik:static int Igazítások: TOP, BOTTOM, LEFT, RIGHT, CENTER, LEADING, TRAILING Állás: VERTICAL, HORIZONTAL Irány: NORTH, SOUTH, EAST, WEST Példa: JLabel lbinfo = new JLabel("Információs szöveg"); lbinfo.sethorizontalalignment(swingconstants.center); lbinfo.sethorizontalalignment(jlabel.center); lbinfo.sethorizontalalignment(lbinfo.center);

Címke JLabel 4 Információ (szöveg / ikon) kiírására használatos Magas szintű esemény nem keletkezik rajta Nem kerülhet billentyűzetfókuszba Jellemzők String text Icon icon int horizontalalignment int verticalalignment int horizontaltextposition int verticaltextposition

Címke JLabel 5 Példák: cp.add(new JLabel("Nincsen ikonja, alapértelmezett igazítás")); ImageIcon iijobb = new ImageIcon("icons/jobb.jpg"); JLabel lb = new JLabel("Csak elıre!",iijobb,jlabel.center); cp.add(lb); lb.sethorizontaltextposition(jlabel.leading);

AbstractButton - A gombok őse 6 Gombszerű komponensek absztrakt őse: AbstractButton +--JButton +--JToggleButton +--JCheckBox +--JRadioButton +--JMenuItem A gombok a ButtonGroup segítségével csoportba foglalhatók

AbstractButton - A gombok őse 7 Események ActionEvent Jellemzők String text Icon icon int mnemonic boolean selected String actioncommand Metódusok void doclick()

Nyomógomb JButton 8 Valamilyen akció, parancs elindítására használatos Események (örökölt) ActionEvent Jellemzők String text Icon icon int mnemonic boolean selected String actioncommand Metódusok (örökölt) void doclick()

Nyomógomb JButton 9 Feladat:

10 A gombok figyelőláncai

11 Példa - Forráskód

12 Példa - Forráskód

Jelölőmező JCheckBox 13 Kétállapotú gomb logikai igaz/hamis állapot jelölésére Egymástól független jelölésekre szokás használni Események (örökölt) ActionEvent Jellemzők (örökölt) String text Icon icon int mnemonic boolean selected String actioncommand

14 Jelölőmező Példa

15 Jelölőmező Példa

16 Rádiógomb JRadioButton, csoportosítás Kétállapotú gomb logikai igaz/hamis állapot jelölésére Egymástól függő jelölésekre szokás használni Csoportosítani szokás (ButtonGroup segítségével) Események (örökölt) ActionEvent Jellemzők (örökölt) Mint a jelülőmezőnél Metódusok void doclick()

17 Gombok csoportosítása ButtonGroup osztály Logikai csoportosítás A csoport gombjai közül egyszerre egy jelölhető be Csoport elemei: rádiógombok, AbstractButton utódok A ButtonGroup objektum összefogja a gombokat, felügyeli azok ki-be kapcsolását Nem komponens, nem keletkezik rajta esemény Konstruktor, metódusok ButtonGroup() void add(abstractbutton b) int getbuttoncount()

18 Gombok csoportosítása Példa

Kombinált lista JComboBox 19 Szerkeszthető szövegmező és legördülő lista kombinációja Események ActionEvent ItemEvent Jellemzők boolean editable int maximumrowcount boolean popupvisible Object selecteditem int selectedindex Konstruktorok JComboBox() JComboBox(Object[] items) JComboBox(Vector items)

Kombinált lista JComboBox 20 Metódusok void additem(object anobject) void insertitemat(object anobject, int index) void removeitem(object anobject) void removeitemat(int anindex) void removeallitems() Példa: JComboBox cb = new JComboBox(); cp.add(cb); cb.additem("erika"); cb.additem("margó"); cb.additem("mari");

21 MVC modell

Az MVC modell összetevői 22 Model (modell): a komponens adatai, állapota View (nézet): a komponens megjelenése a képernyőn (look and feel, skin) Controller (vezérlő): a komponens viselkedése Egy modellen több nézet osztozhat Javában a nézet és a viselkedés csak részben válik el Javában modell adatainak kiolvasása: komponens.getmodel().getadat() Például: ta.getdocument().getlength()

23 Modell interfészek,alapértelmezett modellek Modell interfész Metódusai (néhány) Mi használja? Alapértelm. osztály Document adddocumentlistener getlength gettext (JTextComponent) JTextField JTextArea (AbstractDocument) PlainDocument ListModel addlistdatalistener getelementat getsize JList (AbstractListModel) DefaultListModel ListSelection - Model addlistselectionlistener clearselection getselectionmode JList DefaultListSelection - Model

A szövegek őse JTextComponent 24 Szövegkomponensek absztrakt őse: JTextComponent +--JTextField +--JPasswordField +--JtextArea Adatmodellje: Document Esemény DocumentEvent (adatmodellen)

A szövegek őse JTextComponent 25 Jellemzők Document doc String text Caret caret int caretposition Color caretcolor boolean editable int selectionstart int selectionend Color selectioncolor Color selectedtextcolor

Szövegmező JTextField 26 Beviteli mező Események ActionEvent DocumentEvent (adatmodellen, örökölt) Jellemzők örökölt: doc, text, caret, caretposition, caretcolor, editable, selectionstart, selectionend, selectioncolor, selectedtextcolor int columns int horizontalalignment

Szövegterület JTextArea 27 Többsoros beviteli mező Nincs görgetősávja; görgetés: JTextArea ta = new JTextArea(); cp.add(new JScrollPane(ta)); Esemény DocumentEvent (adatmodellen, örökölt) Jellemzők örökölt: doc, text, caret, caretposition, caretcolor, editable, selectionstart, selectionend, selectioncolor, selectedtextcolor

Szövegterület JTextArea 28 Jellemzők (folyt.) int columns int rows int tabsize boolean linewrap Metódusok void insert(string str, int pos) void append(string str) void replacerange(string str, int start, int end)

Szövegterület JTextArea 29 Metódusok (folyt.) int getlinecount() int getlinestartoffset(int line) int getlineendoffset(int line) int getlineofoffset(int offset) AbstractDocument osztály metódusai String gettext(int offset, int length) int getlength()

Lista JList 30 Választható szövegek listája Nem gördül le, fix területen helyezkedik el Egyszerre több eleme is kiválasztható Adatmodellje: ListModel Kiválasztásmodellje: ListSelectionModel Esemény ListSelectionEvent (kiválasztásmodellen) Példa: JList lista=new JList(); lista.getmodel().addelement("hosszúhetény"); DefaultListModel model = new DefaultListModel(); JList lista=new JList(model); model.addelement("hosszúhetény");

Lista JList 31 Jellemzők ListModel model (alapért.:defaultlistmodel) int selectionmode Lehetséges értékei (ListSelectionModel): SINGLE_SELECTION, SINGLE_INTERVAL_SELECTION, MULTIPLE_INTERVAL_SELECTION int selectedindex int visiblerowcount int fixedcellwidth int fixedcellheight

Lista JList 32 Metódusok void setlistdata(object[] listdata) void setlistdata(vector listdata) void setselectedvalue(object anobject, boolean shouldscroll) Object getselectedvalue() Object[] getselectedvalues() void setselectedindex(int index) int getselectedindex() void setselectedindices(int[] indices) int[] getselectedindices()

Lista JList 33 Metódusok boolean isselectedindex(int index) boolean isselectionempty() void clearselection() int getfirstvisibleindex() int getlastvisibleindex() DefaultListModel osztály Vectorhoz hasonló

Menüsor JMenuBar 34 Program funkcióinak csoportosítása Menühierarchia: tetején: menüsor (JMenuBar) menüsor elemei: lebomló menük (JMenu) menü lehetséges elemei: újabb menü (JMenu) menütétel (JMenuItem) jelölő-menütétel (JCheckBoxMenuItem) rádió-menütétel (JRadioButtonMenuItem) menüelválasztó (szeparátor)

Menüsor JMenuBar 35 Menüsor (főmenü) a keret tulajdona kerethez rendelés: setjmenubar(jmenubar mb) Menütételek Gombok tovább nem bonthatók Gyorsabb elérés emlékeztető karakter (menü, menütétel) gyorsbillentyű (menütétel)

Menüsor JMenuBar 36 Menüosztályok hierarchiája JComponent Esemény: +--JMenuBar +--AbstractButton +--JMenuItem +--JCheckBoxMenuItem +--JRadioButtonMenuItem +--Jmenu ActionEvent minden gombon keletkezik menütételeken kell lekezelni

Menüsor JMenuBar 37 JMenuBar osztály JMenuBar() JMenu add(jmenu m) JMenu osztály JMenu(String text) JMenu() JMenuItem add(jmenuitem mi) void addseparator() void insertseparator(int index)

Menüsor JMenuBar 38 JMenuItem osztály JMenuItem(String text, Icon icon) JMenuItem(String text, int mnemonic) örökölt jellemzők: text, icon, mnemonic, selected, actioncommand boolean enabled Keystroke accelerator void doclick()

Menüsor JMenuBar 39 Példa: JMenuBar mb; JMenu mfile; setjmenubar(mb=new JMenuBar()); mb.add(mfile=new JMenu("File")); mb.add(new JMenu("Help")); mfile.add(new JMenuItem("Open")); mfile.addseparator(); mfile.add(new JMenuItem("Exit")); Menüsor Menütételek (lehetnének újabb menük is) Menük Menüszeparátor

Dialógusablak JDialog 40 Tipikusan felhasználói adatbevitelre, nyugtázásra, információközlésre szokás használni Tulajdonosa: keret vagy másik dialógusablak Lehet modális Tartalompanel Gyerekeit a tartalompanelbe kell tenni: dialog.getcontentpane().add(gyerek); elrendezés-menedzsere alapértelmezésben határmenti Esemény WindowEvent

Dialógusablak JDialog 41 Jellemzők String title boolean modal boolean resizable Konstruktorok, metódusok JDialog(Frame owner, String title, boolean modal) JDialog(Dialog owner, String title, boolean modal) void show() void hide()

JOptionPane osztály 42 Az opciópanel statikus metódusai szabványos dialógusokat jelenítenek meg modálisan: Információközlés (showmessagedialog) Megerősítés kérése (showconfirmdialog) Adatkérés (showinputdialog) Dialógusablak összeállítása Dialógus típusa: Message, Confirm, Input, Option Ikon (messagetype) megadása Üzenet (message) megadása Opciók kiválasztása

JOptionPane osztály 43 Dialóguskészítő metódusok paraméterei Component parent Object message String title int messagetype Icon icon int optiontype Object[] selectionvalues Object initialselectionvalue Object[] options Object initialvalue

JOptionPane osztály 44 Dialóguskészítő metódusok static void showmessagedialog(paraméterek) Paraméterek: parent, message, title, messagetype, icon static int showconfirmdialog(paraméterek) Paraméterek: parent, message, title, optiontype, messagetype, icon static String showinputdialog(paraméterek) Paraméterek: parent, message, title, messagetype, icon, selectionvalues, initialselectionvalue static int showoptiondialog(paraméterek) Paraméterek: parent, message, title, optiontype, messagetype, icon, options, initialvalue

45 JOptionPane osztály - Példa

46 JOptionPane osztály - Példa

Időzítő Timer 47 Adott időközönként (delay) egy ActionEvent eseményt bocsát ki és elküldi az őt hallgató objektumoknak Leállítható (stop) és újraindítható (start) Van egy kezdeti késleltetése A periódusos és a kezdeti késleltetés menet közben is állítható Egy időzítőhöz akárhány hallgató kapcsolható, és egy hallgató több időzítőt is hallgathat Esemény: ActionEvent

Időzítő Timer 48 Jellemzők int delay int initialdelay Konstruktor, metódusok Timer(int delay, ActionListener listener) void addactionlistener(actionlistener listener) void remove ActionListener(ActionListener listener) void start() void stop() void restart() boolean isrunning()

Időzítő Timer 49 Példa:

50 Időzítő Timer

51 Időzítő Timer

52 Időzítő Timer

53 Grafika

Rajzolás 54 Javában csak a grafikus felületre lehet rajzolni Minden komponenshez tartozik egy Graphics osztályú objektum java.awt.graphics: absztrakt osztály, amely tartalmazza a grafikus műveletekhez szükséges deklarációkat Egy komponens grafikus objektumát a rendszer hozza létre

Rajzolás komponensekre 55 Kétféle rajzolási lehetőség van: Lekérjük a grafikus felületet (getgraphics()) Újrarajzoláskor a rajz nem jelenik meg Felülírjuk a paintcomponent(graphics gr) metódusát Példa: A paintcomponent() metódust a rendszer automatikusan meghívja minden olyan esetben, amikor a felületet frissíteni kell (pld. elmozgatás, átméretezés) Jcomponent c = new Graphics gr = comp.getgraphics(); gr.drawline(10,20,100,20);

Rajzolás komponensekre 56 Példa: protected void paintcomponent(graphics gr) { super.paintcomponent(gr); gr.drawline(10,20,100,20); } Példa:

JComponent metódusok 57 Graphics getgraphics(): visszaadja a komponens grafikus felületét Protected void paintcomponent(graphics gr): itt adjuk meg a rajzoló utasításokat Void repaint(): újrarajzolja a komponenst. Akkor használjuk, ha az újrarajzolás szükségességét az operációs rendszer nem veheti észre

Graphics osztály 58 Egy Graphics objektum állapota: Komponens, amire rajzolunk Rajzolószín, betű Kivágási terület Eltolási pont Rajzolási mód: Felülíró XOR

Graphics osztály - Metódusok 59 setcolor(color c), getcolor() setfont(font f), getfont() setclip( ), getclipbounds() translate(x, y) setpaintmode(): felülíró rajzolás setxormode(color c): ha egy alakzatot kétszer kirajzolunk, visszakapjuk az eredeti alakzatot drawline(), drawstring() drawrect(), fillrect(), clearrect() drawoval(), filloval(), drawarc(), fillarc()

Graphics osztály - Metódusok 60 Példa:

61 Alacsony szintű események

Alacsony szintű események 62 Operációs rendszer szintjén történő elemi esemény Forrása csak komponens lehet ComponentEvent utódja Alacsony szintű AWT események: ComponentEvent: Komponensesemény ContainerEvent: Konténeresemény FocusEvent: Fókuszesemény WindowEvent: Ablakesemény KeyEvent: Billentyűzetesemény MouseEvent: Egéresemény

63 Alacsony szintű események

64 Alacsony szintű események

Komponensesemény - ComponentEvent 65 Példa:

Fókuszesemény - FocusEvent 66 Példa:

Billentyűesemény - KeyEvent 67 Példa:

Egéresemény - MouseEvent 68 Példa:

Egéresemény - MouseEvent 69 Példa:

Könyvészet 70 Angster Erzsébet, Objektumorientált tervezés és programozás. Java I-II. (Bazele programării orientate pe obiecte), Ed. 4 Kör Bt., Budapesta, 2002. Kathy Sierra, Bert Bates: Agyhullám: Java, Kiskapú, 2011.