Programozási technológia

Hasonló dokumentumok
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).

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

Programozási technológia

Szoftvertechnológia alapjai Java előadások

JAVA PROGRAMOZÁS 5.ELŐADÁS

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

Java felhasználói felület

Java Programozás 11. Ea: MVC modell

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

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

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

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

Swing. (A javax.swing csomag)

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

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 {

Java felhasználói felület

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

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

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

ZH mintapélda. Feladat. Felület

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

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

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

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

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

- 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 7. Gy: Java alapok. Adatkezelő 3.rész

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

Concurrency in Swing

Java és web programozás

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

DebitTray program Leírás

ContractTray program Leírás

A Java nyelv. Dialógus ablakok. Elek Tibor

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

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

ServiceTray program Leírás

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

BME MOGI Gépészeti informatika 8.

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

ClicXoft programtálca Leírás

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

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

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

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

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

Programozási technológia

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

libgdx alapok, első alkalmazás

Programozási nyelvek Java

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

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

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.

Java tutorial Grafikus felhaszna loi feluletek

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

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

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

Már megismert fogalmak áttekintése

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

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

és az instanceof operátor

Szoftvertechnolo gia gyakorlat

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

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

Végrehajtási szálak - kiegészítések. Szinkronizálás, érvénytelenített metódusok helyettesítése

A Google űrlap (form) használata

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

Alap számológép alkalmazás

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

Alapok (a K2D rendszer alapjai)

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

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

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

Szervlet-JSP együttműködés

Az osztályok csomagokba vannak rendezve, minden csomag tetszőleges. Könyvtárhierarhiát fed: Pl.: java/util/scanner.java

Delphi programozás I.

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

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

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

VII. Appletek, grafika

HVK Adminisztrátori használati útmutató

2. Beadandó feladat dokumentáció

Technikai információk fejlesztőknek

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

Programozási nyelvek Java

Programozás I. Első ZH segédlet

Java gyakorlat feladatai e s megolda sai ( )

Abstract osztályok és interface-ek. 7-dik gyakorlat

JAVA SE/ME tanfolyam tematika

Programozási technológia

II. labor Az alábbi osztálydiagram (2.10 ábra) alapján hozzuk létre a diagramban feltüntetett csomagokat, interfészt és osztályokat.

New Default Standard.ipt

Átírás:

Programozási technológia Grafikus felhasználói felület Dr. Szendrei Rudolf ELTE Informatikai Kar 2018.

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 2

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

GUI ablak létrehozása import javax.swing.jframe; public class MyFrame extends JFrame { public MyFrame() { settitle("üres keret"); setsize(200, 60); setvisible(true); public static void main(string[] args) { new MyFrame(); 4

Program futtatása A program futtatásakor 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 5

GUI ablak bezárása 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 6

GUI ablak bezárása A keret automatikus bezáró műveletének előírása: setdefaultcloseoperation művelet segítségével Paramétere: WindowConstants-beli konstans import javax.swing.jframe; public class MyFrame extends JFrame { public MyFrame() { setdefaultcloseoperation(windowconstants.exit_on_close); settitle("üres keret"); setsize(200, 60); setvisible(true); public static void main(string[] args){ new MyFrame(); 7

GUI ablak bezárása Program leállítása a keret bezárásakor eseménykezelővel A kezelőt a WindowAdapter osztályból kell származtatni, és az addwindowlistener művelettel kell a kerethez rendelni. A kezelő egyetlen feladata az ablak bezárásának kezelése, 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 mi 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. 8

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

GUI ablak bezárása Az,,implicit" objektum helyett az objektumot létrehozhatjuk az osztályon belül. Az alábbi megoldással egy névtelen osztályt hozunk létre és példányosítunk. public class MyFrame extends JFrame { private WindowAdapter exit = new WindowAdapter() { @Override public void windowclosing(windowevent e){ System.exit(0); ); public MyFrame() { addwindowlistener(exit);... 10

GUI ablak bezárása Az eseménykezelő lehet külön osztály is, így azt több keret esetében újra felhasználhatjuk majd public class ExitClass extends WindowAdapter() { @Override public void windowclosing(windowevent e){ System.exit(0); public class MyFrame extends JFrame { public MyFrame() { addwindowlistener(new ExitClass());... 11

GUI események kezelése 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 12

Példa Kattintások számlálása 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. 13

Példa Kattintások számlálása 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 CounterButton 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. 14

Példa Kattintások számlálása Az ikont a seticonimage művelettel adhatjuk meg, aminek a paramétere az ikon elérési útja, amit a megfelelő eszközön (Toolkit) keresztül rendelünk a kerethez. seticonimage(toolkit.getdefaulttookit().getimage("x.png")); Így a jar állományból nem töltődik be az ikon. Ehhez a fájl nevét URL-ként kell megadni. A PATH a projekt gyökeréből indul (Pl.: icons/main.png) import java.net.url; URL url = getclass().getclassloader().getresource("path"); seticonimage(toolkit.getdefaulttookit().getimage(url)); 15

Példa Kattintások számlálása Főprogram megvalósítása import java.awt.*; import javax.swing.*; import java.net.url; public class MyFrame extends JFrame { public MyFrame() { addwindowlistener(new ExitClass()); settitle("számláló"); setsize(400, 100); getcontentpane().setlayout(new FlowLayout()); getcontentpane().add(new CounterButton()); getcontentpane().add(new ExitButton()); // később hozzuk létre URL url = getclass().getclassloader().getresource("icon.png"); seticonimage(toolkit.getdefaulttoolkit().getimage(url)); setvisible(true); 16

Példa Kattintások számlálása Kattintás számláló gomb osztályának megvalósítása import java.awt.event.*; import javax.swing.*; public class CounterButton extends JButton implements ActionListener { private int numclicks = 0; public CounterButton(){ settext("kattintás: 0"); addactionlistener(this); @Override public void actionperformed(actionevent e){ settext("kattintás: " + ++numclicks); 17

Példa Kattintások számlálása Egészítsük ki az előző programot úgy, hogy a keretben elhelyezünk 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 kezelése 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 18

Kilépés egységes kezelése A programból való 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 (exit) 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) 19

Példa Kattintások számlálása Kilépés gomb osztályának megvalósítása import java.awt.event.*; import javax.swing.*; public class ExitButton extends JButton{ public ExitButton() { super(new AbstractAction("Kilépés"){ @Override public void actionperformed(actionevent e){ new ExitClass().windowClosing(null); ); 20

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