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

Hasonló dokumentumok
Programozási technológia

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

Szoftvertechnológia alapjai Java előadások

JAVA PROGRAMOZÁS 5.ELŐADÁS

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

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

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

Java felhasználói felület

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

Programozási technológia

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

Java Programozás 11. Ea: MVC modell

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

Swing. (A javax.swing csomag)

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

VI. Grafikus Java alkalmazások

abkezel.java import java.awt.*; import java.awt.event.*; import javax.swing.*; import java.sql.*; public class abkezel extends JFrame {

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.

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

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

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

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

ZH mintapélda. Feladat. Felület

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

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

Java felhasználói felület

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

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

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

DebitTray program Leírás

ContractTray program Leírás

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

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

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

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

Concurrency in Swing

ServiceTray program Leírás

A Java nyelv. Dialógus ablakok. Elek Tibor

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

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

Java és web programozás

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

A Vonallánc készlet parancsai lehetővé teszik vonalláncok és sokszögek rajzolását.

BME MOGI Gépészeti informatika 8.

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

Java-s Nyomtatványkitöltő Program Súgó

Johanyák Zsolt Csaba: Ugráló gomb oktatási segédlet Copyright 2008 Johanyák Zsolt Csaba

Pelda öröklődésre: import java.io.*; import java.text.*; import java.util.*; import extra.*;

Dokumentum létrehozása/módosítása a portálon:

E-Freight beállítási segédlet

Már megismert fogalmak áttekintése

ClicXoft programtálca Leírás

VII. Appletek, grafika

Programozási nyelvek Java

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

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

Táblázatok. Táblázatok beszúrása. Cellák kijelölése

Pick Pack Pont kereső és boltválasztó alkalmazás

Generikus osztályok, gyűjtemények és algoritmusok

libgdx alapok, első alkalmazás

Java tutorial Grafikus felhaszna loi feluletek

Objektum Orientált Programozás. 11. Kivételkezelés 44/1B IT MAN

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

VARIO Face 2.0 Felhasználói kézikönyv

BioAdmin 4.1 könnyű telepítés csak Kliens használatra

A Cobra Sprint telepítése CobraContoLight felhasználók számára

OOP: Java 11.Gy: Enumok, beágyazott osztályok. 13/1 B ITv: MAN

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

Eseménykezelés. Szoftvertervezés és -fejlesztés II. előadás. Szénási Sándor.

Téradatbázisok használata QGIS-ből A DB kezelő modul 2.2 verzió

és az instanceof operátor

HVK Adminisztrátori használati útmutató

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

Java VIII. Az interfacei. és az instanceof operátor. Az interfészről általában. Interfészek JAVA-ban. Krizsán Zoltán

Digitális aláírás általános telepítése és ellenőrzése

Java Programozás 2. Gy: EmpProgram. Grafikus felületű adatkezelő program

Sikeres végrehajtás(pass): ez azt jelenti, hogy a teszt rendben lefutott, és az ellenőrzési feltételek mind teljesültek.

Programozási nyelvek Java

A Google űrlap (form) használata

Elmib Önkormányzati hibabejelentő. Felhasználói kézikönyv v1.0

Osztálytervezés és implementációs ajánlások

Osztálytervezés és implementációs ajánlások

Új Nemzedék Központ. EFOP pályázatok online beszámoló felülete. Felhasználói útmutató

Az importálás folyamata Felhasználói dokumentáció verzió 2.1.

Vé V g é r g e r h e a h j a tá t s á i s s z s ál á ak a Runnable, Thread

Osztályok. 4. gyakorlat

Alapok (a K2D rendszer alapjai)

Bóra Adatcsere. A webes modul működésének részletesebb leírását a csatolt dokumentum tartalmazza.

Delphi programozás I.

SMS küldő központ Leírás

Példaprogram - 2. Objektum-orientált programozás Java és C++ nyelven. Példaprogram. Azonosítók. Dr. Rohonczy János. Azonosítók

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

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

Mobil Partner telepítési és használati útmutató

Technikai információk fejlesztőknek

2. Beadandó feladat dokumentáció

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

Az FMH weboldal megnyitásakor megjelenő angol nyelvű üzenetek eltüntetése

Átírás:

Programozási Grafikus Informatikai Kar Eötvös Loránd Tudományegyetem 1

Tartalom 1 2

Grafikus felhasználói felület Két csomag elemeiből lehet a felületet elkészíteni awt: heavy weight" komponensek swing: light weight" komponensek Mi hogyan használjuk? awt: eseménykezelés, speciális elemek swing: látható" komponensek 3

Swing komponensek Közös ősosztály: JComponent Származatott osztályok: JFrame keret JLabel címke JButton gomb JPanel panel JComboBox kombobox (legördülő menü) JList lista JSlider csúszka JSpinner spin vezérlő JTable táblázat 4

Üres keret létrehozása Két osztályt kell készítenünk: Főprogram osztálya: Keret public class Keret public static void main(string[] args) new ÜresKeret(); Üres keret osztálya: ÜresKeret import javax.swing.jframe; public class ÜresKeret extends JFrame public ÜresKeret() settitle("üres keret"); setsize(200, 60); setvisible(true); 5

Üres keret futtatása A program futtatása során a következő ablak jelenik meg: A bezárás gombra kattintva a program ablaka bezárul, de a program nem fejeződik be. parancssorban nem kapjuk vissza a promptot a futtatási konzol ablak mutatja, hogy a program fut A bezárás gomb megnyomásával csak a keret tűnik el Program leállítása: parancssorból Ctrl+C lenyomásával NetBeans környezetben a Run menü Stop Build/Run pontjával 6

Program leállítása a keret bezárásakor Az alapértelmezett megvalósítás szerint bezáráskor csak eltűnik a keret. Lehetséges megoldások: A bezáráskori viselkedés megadása A bezárás eseményének figyelése eseménykezelő hozzárendelésével 7

Program leállítása a keret bezárásakor automatikusan A kerethez rendelt automatikus bezáró művelet előírása: setdefaultcloseoperation művelet segítségével Paramétere: adott konstans érték lehet (WindowConstants) import javax.swing.*; public class ÜresKeret extends JFrame public ÜresKeret() setdefaultcloseoperation(windowconstants.exit_on_close); settitle("üres keret"); setsize(200, 60); setvisible(true); 8

Program leállítása a keret bezárásakor eseménykezelővel A kezelőt a WindowAdapter osztályból kell származtatni A kezelőt az addwindowlistener művelettel kell a kerethez rendelni A kezelő egyetlen feladata az ablak bezárásának, amit a windowclosing művelet átdefiniálásával tehetünk meg A művelet paramétere a bezárást okozó WindowEvent típusú esemény, amit nem használunk A műveletben ki kell lépni a programból Ha kilépéskor egyéb tevékenységet is akarunk végezni, akkor mindenképpen ezt az utat kell követni 9

Program leállítása a keret bezárásakor eseménykezelővel import javax.swing.*; import java.awt.event.*; public class ÜresKeret extends JFrame public ÜresKeret() addwindowlistener(new WindowAdapter() @Override public void windowclosing(windowevent e) System.exit(0); ); settitle("üres keret"); setsize(200, 60); setvisible(true); 10

Program leállítása a keret bezárásakor eseménykezelővel Az implicit" objektum helyett az objektumot felvehetjük az osztályon belül import javax.swing.*; import java.awt.event.*; public class ÜresKeret extends JFrame private WindowAdapter kilépés = new WindowAdapter() @Override public void windowclosing(windowevent e) System.exit(0); ); public ÜresKeret() addwindowlistener(kilépés); settitle("üres keret"); setsize(200, 60); setvisible(true); 11

Program leállítása a keret bezárásakor eseménykezelővel Létrehozhatjuk az eseménykezelőt külön osztályként is, így azt több keret esetében újra felhasználhatjuk majd import java.awt.event.*; public class Kilépés extends WindowAdapter @Override public void windowclosing(windowevent e) System.exit(0); 12

Program leállítása a keret bezárásakor eseménykezelővel Az eseménykezelő osztályt ezután az alábbi módon használhatjuk import javax.swing.*; public class ÜresKeret extends JFrame public ÜresKeret() addwindowlistener(new Kilépés()); settitle("üres keret"); setsize(200, 60); setvisible(true); 13

UI események A felhasználói akciók a felületi elemeken eseményt váltanak ki: ActionEvent Ezeket kell kezelni az elemekkel úgy, hogy eseményfigyelőt rendelünk hozzájuk (addactionlistener vagy Action objektum beágyazása) Események figyelése: ActionListener interfész Egyetlen művelet: actionperformed, aminek paramétere az esemény 14

Példa - Elhelyezünk egy gombot a keretben, amely figyeli a kattintásokat, és megjeleníti a kattintások számát Ezen kívül a keret ikonját is megváltoztatjuk 15

Példa - Gomb elhelyezése a kereten A számláló gombot a keret adatterületére" helyezzük el, amit a getcontentpane() művelet ad meg Ehhez az add művelettel vehetünk hozzá elemet A gombot a SzámlálóGomb osztály segítségével valósítjuk meg Ezt a JButton osztályból kell származtatni, és ki kell egészíteni eseménykezeléssel is Az osztálynak meg kell valósítania ezért az ActionListener interfészt 16

Példa - Keret ikonjának beállítása A keret ikonját a seticonimage művelettel adhatjuk meg A művelet paramétere az ikon, amit a megfelelő eszközön (Toolkit) keresztül rendelünk a kerethez. seticonimage(toolkit.getdefaulttookit().getimage("gomb.png")); A Toolkit az awt csomag része Így a jar állományból nem töltődik be az ikon. Ehhez a fájl nevét URL-ként kell megadni. java.net.url url = Gomb.class.getResource("gomb.png"); seticonimage(toolkit.getdefaulttookit().getimage(url)); 17

Példa - import java.awt.*; import javax.swing.*; public class ÜresKeret extends JFrame public ÜresKeret() addwindowlistener(new Kilépés()); settitle(""); setsize(600, 100); getcontentpane().add(new SzámlálóGomb()); java.net.url url = ÜresKeret.class.getResource("gomb.png"); seticonimage(toolkit.getdefaulttoolkit().getimage(url)); setvisible(true); 18

Példa - import java.awt.event.*; import javax.swing.*; public class SzámlálóGomb extends JButton implements ActionListener private int kattintasok = 0; public SzámlálóGomb() settext("kattintás: 0"); addactionlistener(this); @Override public void actionperformed(actionevent e) settext("kattintás: " + ++kattintasok); 19

Példa - +1: Egészítsük ki az előző programot úgy, hogy a keretben helyezzünk el egy kilépésre lehetőséget adó gombot is El kell készítenünk az előzőekhez hasonlóan a kilépésre szolgáló gombot, ahol az esemény a program befejezését jelenti A kereten most nem egy, hanem két gombot kell elhelyeznünk, megadva azok elhelyezkedési módját (setlayout) A legegyszerűbb lehetőség a FlowLayout, amelybe folytonosan helyezhetünk el elemeket 20

Példa - import java.awt.*; import javax.swing.*; public class ÜresKeret extends JFrame public ÜresKeret() addwindowlistener(new Kilépés()); settitle("számláló"); setsize(400, 100); getcontentpane().setlayout(new FlowLayout()); getcontentpane().add(new SzámlálóGomb()); getcontentpane().add(new KilépésGomb()); java.net.url url = ÜresKeret.class.getResource("gomb.png"); seticonimage(toolkit.getdefaulttoolkit().getimage(url)); setvisible(true); 21

Példa - A programból kilépéskor ugyanaz következzen be, bárhogy is lépünk ki a programból (még a mostani egyszerű esetben is) Célszerű az ablak bezárásához és a kilépés gomb lenyomásához ugyanazt az eljárást rendelnünk (kilép) A bezárásához eseménykezelőt rendelünk, amelyben ezt hívjuk meg, és a gomb megnyomásakor is ezt hívjuk meg A kilépés gombot most másként hozzuk létre Egy gomb konstruktorának paramétere lehet egy Action típusú objektum Ebben meg lehet adni az esemény kezelését, illetve a gomb további tulajdonságait Az Action interfészt megvalósító AbstractAction osztály, alapértelmezésben üres megvalósításokkal látja el (csak a számunkra érdekeseket" kell megvalósítanunk) 22

Példa - import java.awt.event.*; import javax.swing.*; public class KilépésGomb extends JButton public KilépésGomb() super(new AbstractAction("Kilépés") @Override public void actionperformed(actionevent e) new Kilépés().windowClosing(null); // System.exit(0); ); 23

FlowLayout az elemek folyamatos elhelyezése sorban BorderLayout az elemek elhelyezése 5 helyre: középre (CENTER) alulra (SOUTH) / felülre (NORTH) balra (WEST) / jobbra (EAST) GridLayout az elemek folyamatos elhelyezése megadott méretű rácsban, ugyanolyan méretben GridBagLayout az elemek elhelyezése rácsban, az elemek kiterjedése több egység is lehet BoxLayout elemek elhelyezése adott méretben, adott távolságra vízszintes vagy függőleges irányban CardLayout kártyapakli elhelyezés (csak egy elem látszik, ami változtatható) OverlayLayout elemek egymásra helyezése https://docs.oracle.com/javase/tutorial/uiswing/layout/visual.html 24