49
JAVA PROGRAMOZÁS 4.ELŐADÁS Dr. Pál László, Sapientia EMTE, Csíkszereda 4.ELŐADÁS Kivételkezelés, Grafikus felhasználói felület 2014-2015 tavasz

JAVA PROGRAMOZÁSpallaszlo/java/eloadas/4.Eloadas.pdfBetű, szín 36 Colorosztály RGB színt tárol Minden szín a 3 alapszín (piros,zöld,kék) keveréke Tulajdonságok int red

  • Upload
    others

  • View
    1

  • Download
    0

Embed Size (px)

Citation preview

Page 1: JAVA PROGRAMOZÁSpallaszlo/java/eloadas/4.Eloadas.pdfBetű, szín 36 Colorosztály RGB színt tárol Minden szín a 3 alapszín (piros,zöld,kék) keveréke Tulajdonságok int red

JAVA PROGRAMOZÁS4.ELŐADÁS

Dr. Pál László, Sapientia EMTE, Csíkszereda

4.ELŐADÁS

Kivételkezelés, Grafikus felhasználói felület2014-2015 tavasz

Page 2: JAVA PROGRAMOZÁSpallaszlo/java/eloadas/4.Eloadas.pdfBetű, szín 36 Colorosztály RGB színt tárol Minden szín a 3 alapszín (piros,zöld,kék) keveréke Tulajdonságok int red

Kivételkezelés2

Page 3: JAVA PROGRAMOZÁSpallaszlo/java/eloadas/4.Eloadas.pdfBetű, szín 36 Colorosztály RGB színt tárol Minden szín a 3 alapszín (piros,zöld,kék) keveréke Tulajdonságok int red

Rendszerhibák és kivételek3

� Programot leállító események: objektumok, melyek osztályai a Throwable osztály leszármazottai

� A „dobható” események két csoportja:� Rendszerhiba (Error): a programot leállítja� Rendszerhiba (Error): a programot leállítja

� Kivétel (Exception): hibakezelés után a program folytatódhat

� Nem ellenőrzött kivétel: nem kötelező kezelni (futási hibák, RuntimeException és annak leszármazottai)

� Ellenőrzött kivétel: kötelező kezelni (többi Exception)

Page 4: JAVA PROGRAMOZÁSpallaszlo/java/eloadas/4.Eloadas.pdfBetű, szín 36 Colorosztály RGB színt tárol Minden szín a 3 alapszín (piros,zöld,kék) keveréke Tulajdonságok int red

Rendszerhibák és kivételek osztályhierarchiája

4

Page 5: JAVA PROGRAMOZÁSpallaszlo/java/eloadas/4.Eloadas.pdfBetű, szín 36 Colorosztály RGB színt tárol Minden szín a 3 alapszín (piros,zöld,kék) keveréke Tulajdonságok int red

Kivételosztályok deklarációi5

Page 6: JAVA PROGRAMOZÁSpallaszlo/java/eloadas/4.Eloadas.pdfBetű, szín 36 Colorosztály RGB színt tárol Minden szín a 3 alapszín (piros,zöld,kék) keveréke Tulajdonságok int red

Nem ellenőrzött ellenőrzött kivételek6

� Nem ellenőrzött kivételek:

� Futási hibák, vagyis RuntimeException és annak leszármazottai

� A nem ellenőrzött kivételeket a programozó nem köteles lekezelni

� Ellenőrzött kivételek:

� Minden kivétel, kivéve az előző csoportot

� A programozónak kötelező lekezelnie, különben a fordító hibát jelez

Page 7: JAVA PROGRAMOZÁSpallaszlo/java/eloadas/4.Eloadas.pdfBetű, szín 36 Colorosztály RGB színt tárol Minden szín a 3 alapszín (piros,zöld,kék) keveréke Tulajdonságok int red

Kivételek keletkezése és kiváltása7

� Ki váltja ki?

� API metódus

� Programozó

� Kivétel kiváltása: kivételobjektum létrehozása és � Kivétel kiváltása: kivételobjektum létrehozása és bedobása (throw) a program vérkeringésébe

throw new <Kivételosztály>(<információs szöveg>)

� A kivétel a metódushívási láncon visszafelé kiszáll a programból

Page 8: JAVA PROGRAMOZÁSpallaszlo/java/eloadas/4.Eloadas.pdfBetű, szín 36 Colorosztály RGB színt tárol Minden szín a 3 alapszín (piros,zöld,kék) keveréke Tulajdonságok int red

Kivétel útja - Példa8

Page 9: JAVA PROGRAMOZÁSpallaszlo/java/eloadas/4.Eloadas.pdfBetű, szín 36 Colorosztály RGB színt tárol Minden szín a 3 alapszín (piros,zöld,kék) keveréke Tulajdonságok int red

Kivétel útja - Példa9

Page 10: JAVA PROGRAMOZÁSpallaszlo/java/eloadas/4.Eloadas.pdfBetű, szín 36 Colorosztály RGB színt tárol Minden szín a 3 alapszín (piros,zöld,kék) keveréke Tulajdonságok int red

Kivétel útja - Példa10

Page 11: JAVA PROGRAMOZÁSpallaszlo/java/eloadas/4.Eloadas.pdfBetű, szín 36 Colorosztály RGB színt tárol Minden szín a 3 alapszín (piros,zöld,kék) keveréke Tulajdonságok int red

Vektor túlindexelése - Példa11

Page 12: JAVA PROGRAMOZÁSpallaszlo/java/eloadas/4.Eloadas.pdfBetű, szín 36 Colorosztály RGB színt tárol Minden szín a 3 alapszín (piros,zöld,kék) keveréke Tulajdonságok int red

A kivétel továbbadása – throws12

� Ellenőrzött kivételekkel a metódushívási lánc minden metódusában foglalkoznunk kell

� Két lehetőségünk van:

� a metódusban kezeljük a kivételt� a metódusban kezeljük a kivételt

� a kivételt továbbadjuk a hívó metódusnak

� Kivétel továbbadásának jelzése a metódusfejben: throws <Kivételosztály1, Kivételosztály2,... >throws Exception

� A kivételosztályok továbbadáskor nem szűkíthetők!

Page 13: JAVA PROGRAMOZÁSpallaszlo/java/eloadas/4.Eloadas.pdfBetű, szín 36 Colorosztály RGB színt tárol Minden szín a 3 alapszín (piros,zöld,kék) keveréke Tulajdonságok int red

A kivétel továbbadása – throws13

� Példa:

Page 14: JAVA PROGRAMOZÁSpallaszlo/java/eloadas/4.Eloadas.pdfBetű, szín 36 Colorosztály RGB színt tárol Minden szín a 3 alapszín (piros,zöld,kék) keveréke Tulajdonságok int red

A kivétel továbbadása – throws14

� Példa:

Page 15: JAVA PROGRAMOZÁSpallaszlo/java/eloadas/4.Eloadas.pdfBetű, szín 36 Colorosztály RGB színt tárol Minden szín a 3 alapszín (piros,zöld,kék) keveréke Tulajdonságok int red

A kivétel elkapása, kezelése15

� try-catch-finally szerkezet

try { // try blokk<utasítások>

}}catch (<Kivételosztály1> <obj1>){ //catch blokk

<utasítások>}…catch (<KivételosztályN> <objn>){ //catch blokk

<utasítások>}finally { //finally blokk

<utasítások>}

Page 16: JAVA PROGRAMOZÁSpallaszlo/java/eloadas/4.Eloadas.pdfBetű, szín 36 Colorosztály RGB színt tárol Minden szín a 3 alapszín (piros,zöld,kék) keveréke Tulajdonságok int red

A kivétel elkapása, kezelése16

� try blokk� Kivételek keletkezésének feltételezett helye

� catch blokk� Kivétel kezelése az érkező kivételobjektum alapján� Aktuális (érkező) kivételobjektum

értékadási kompatibilitás:� értékadási kompatibilitás:formális kivételobjektum = aktuális kivételobjektum

� manipulálható, a blokk végén elpusztul

� Működése� legfeljebb egy catch blokk hajtódik végre� sorrend: egyre általánosabb kivételek definiálandók� nincs kezelve � továbbadódik a hívó metódusnak

� finally blokk� Minden körülmények között végrehajtódik

Page 17: JAVA PROGRAMOZÁSpallaszlo/java/eloadas/4.Eloadas.pdfBetű, szín 36 Colorosztály RGB színt tárol Minden szín a 3 alapszín (piros,zöld,kék) keveréke Tulajdonságok int red

Kivétel elkapásának útja17

Page 18: JAVA PROGRAMOZÁSpallaszlo/java/eloadas/4.Eloadas.pdfBetű, szín 36 Colorosztály RGB színt tárol Minden szín a 3 alapszín (piros,zöld,kék) keveréke Tulajdonságok int red

Kivétel elkapásának útja18

Page 19: JAVA PROGRAMOZÁSpallaszlo/java/eloadas/4.Eloadas.pdfBetű, szín 36 Colorosztály RGB színt tárol Minden szín a 3 alapszín (piros,zöld,kék) keveréke Tulajdonságok int red

Saját kivételek - Példa19

Page 20: JAVA PROGRAMOZÁSpallaszlo/java/eloadas/4.Eloadas.pdfBetű, szín 36 Colorosztály RGB színt tárol Minden szín a 3 alapszín (piros,zöld,kék) keveréke Tulajdonságok int red

Saját kivételek - Példa20

Page 21: JAVA PROGRAMOZÁSpallaszlo/java/eloadas/4.Eloadas.pdfBetű, szín 36 Colorosztály RGB színt tárol Minden szín a 3 alapszín (piros,zöld,kék) keveréke Tulajdonságok int red

Grafikus felhasználói felület21

Page 22: JAVA PROGRAMOZÁSpallaszlo/java/eloadas/4.Eloadas.pdfBetű, szín 36 Colorosztály RGB színt tárol Minden szín a 3 alapszín (piros,zöld,kék) keveréke Tulajdonságok int red

AWT és Swing22

� A GUI (Graphical User Interface) programozására Java kétféle osztálygyűjteményt biztosít. Mindkét esetben a cél a platformfüggetlenség:

� AWT (Abstract Window Toolkit):AWT (Abstract Window Toolkit):� Felhasználja az adott operációs rendszer saját GUI

komponenseit (java.awt csomag)

� Swing:� Az AWT komponensek pehelysúlyú (swing) változatai

� A komponensek grafikusan vannak kirajzolva

� Az AWT-re épül (javax.swing csomag)

Page 23: JAVA PROGRAMOZÁSpallaszlo/java/eloadas/4.Eloadas.pdfBetű, szín 36 Colorosztály RGB színt tárol Minden szín a 3 alapszín (piros,zöld,kék) keveréke Tulajdonságok int red

Komponensek23

� Téglalap alapú képernyőfelületek, meghatározott tulajdonságokkal és viselkedéssel

� Swing komponensek közös őse a javax.swing.JComponentjavax.swing.JComponent

� Konténer komponensek

� Vezérlő komponensek

Page 24: JAVA PROGRAMOZÁSpallaszlo/java/eloadas/4.Eloadas.pdfBetű, szín 36 Colorosztály RGB színt tárol Minden szín a 3 alapszín (piros,zöld,kék) keveréke Tulajdonságok int red

Komponensek hierarchiája24

Page 25: JAVA PROGRAMOZÁSpallaszlo/java/eloadas/4.Eloadas.pdfBetű, szín 36 Colorosztály RGB színt tárol Minden szín a 3 alapszín (piros,zöld,kék) keveréke Tulajdonságok int red

Komponensek tulajdonosi viszonya25

� Két típusú lehet:

� Konténer és komponense: A konténer komponensei fizikailag sosem kerülhetnek a konténeren kívülre� Konténer megszűnése maga után vonja az összes

komponensének a megszűnésétkomponensének a megszűnését

� Példa: a keret, dialógusablak, panel konténerek

� Ablak és ablaka: A gyerek ablakok elhelyezkedése és mérete független a szülő ablaktól� Példa: JWindow, JDialog

Page 26: JAVA PROGRAMOZÁSpallaszlo/java/eloadas/4.Eloadas.pdfBetű, szín 36 Colorosztály RGB színt tárol Minden szín a 3 alapszín (piros,zöld,kék) keveréke Tulajdonságok int red

AWT és Swing osztályhierarchia26

Page 27: JAVA PROGRAMOZÁSpallaszlo/java/eloadas/4.Eloadas.pdfBetű, szín 36 Colorosztály RGB színt tárol Minden szín a 3 alapszín (piros,zöld,kék) keveréke Tulajdonságok int red

Swing program - Példa27

� Feladat: Készítsük el az itt látható keretet! A keret bal felső sarka a képernyő (100,50) pozícióján legyen, mérete 300*100, címe: Frame teszt. A kereten legyen egy címke a Döntsd el:szöveggel, továbbá legyen két nyomógomb, OK és szöveggel, továbbá legyen két nyomógomb, OK és Nem OK felirattal!

lbInfo

fr

btNemOkbtOk

Page 28: JAVA PROGRAMOZÁSpallaszlo/java/eloadas/4.Eloadas.pdfBetű, szín 36 Colorosztály RGB színt tárol Minden szín a 3 alapszín (piros,zöld,kék) keveréke Tulajdonságok int red

Swing program - Példa28

Page 29: JAVA PROGRAMOZÁSpallaszlo/java/eloadas/4.Eloadas.pdfBetű, szín 36 Colorosztály RGB színt tárol Minden szín a 3 alapszín (piros,zöld,kék) keveréke Tulajdonságok int red

Swing program - Példa29

Page 30: JAVA PROGRAMOZÁSpallaszlo/java/eloadas/4.Eloadas.pdfBetű, szín 36 Colorosztály RGB színt tárol Minden szín a 3 alapszín (piros,zöld,kék) keveréke Tulajdonságok int red

Jellemzők30

� Property: Beállítható és lekérdezhető tulajdonság

� Deklaráció: PropType propName;

� beállító metódus (set):void setPropName(PropType propName)void setPropName(PropType propName)

� lekérdező metódus (get / is):PropType getPropName()boolean isPropName()

Page 31: JAVA PROGRAMOZÁSpallaszlo/java/eloadas/4.Eloadas.pdfBetű, szín 36 Colorosztály RGB színt tárol Minden szín a 3 alapszín (piros,zöld,kék) keveréke Tulajdonságok int red

Pont, méret, téglalap31

� Osztályok a látható komponensek paraméterezéséhez� Point osztály: megjegyzi egy pont x és y koordinátáit

� Dimension osztály: megjegyzi egy téglalap méretét (szélességét és magasságát)

� Rectangle osztály: megjegyzi egy téglalap� helyzetét (location): bal felső sarkának x és y koordinátáit,

és

� méretét (dimension): szélességét (width) és magasságát (height)

Page 32: JAVA PROGRAMOZÁSpallaszlo/java/eloadas/4.Eloadas.pdfBetű, szín 36 Colorosztály RGB színt tárol Minden szín a 3 alapszín (piros,zöld,kék) keveréke Tulajdonságok int red

Koordinátarendszer32

screenSize.width=1024x(0,0)

y

screenSize.height=768 A képernyő bal alsó sarka: (1023,767)

Page 33: JAVA PROGRAMOZÁSpallaszlo/java/eloadas/4.Eloadas.pdfBetű, szín 36 Colorosztály RGB színt tárol Minden szín a 3 alapszín (piros,zöld,kék) keveréke Tulajdonságok int red

Toolkit osztály33

� Alapvető, környezetfüggő metódust tartalmaz, amelyek a képernyőkezeléshez, nyomtatáshoz szükségesek

� Metódusok:� Metódusok:

� Static Toolkit get DefaultToolkit()

� Dimension getScreenSize()

� Int getScreenResolution()

� Image createImage(String filename)

� void beep()

Page 34: JAVA PROGRAMOZÁSpallaszlo/java/eloadas/4.Eloadas.pdfBetű, szín 36 Colorosztály RGB színt tárol Minden szín a 3 alapszín (piros,zöld,kék) keveréke Tulajdonságok int red

Toolkit osztály - Példa34

Page 35: JAVA PROGRAMOZÁSpallaszlo/java/eloadas/4.Eloadas.pdfBetű, szín 36 Colorosztály RGB színt tárol Minden szín a 3 alapszín (piros,zöld,kék) keveréke Tulajdonságok int red

Betű, szín35

� Font osztály

� Adott tulajdonságú fontot (betűfajtát) tárol

� Tulajdonságok� String fontName (név, pl.: Arial, Monospaced)String fontName (név, pl.: Arial, Monospaced)

� int style (stílus, pl.: PLAIN, BOLD, ITALIC)

� int size (betűméret pontokban)

� Példánya változtathatatlan

� Minden komponensnek van fontja

� Logikai fontnevek: SansSerif, Serif, Monospaced,

Dialog, DialogInput

Page 36: JAVA PROGRAMOZÁSpallaszlo/java/eloadas/4.Eloadas.pdfBetű, szín 36 Colorosztály RGB színt tárol Minden szín a 3 alapszín (piros,zöld,kék) keveréke Tulajdonságok int red

Betű, szín36

� Color osztály� RGB színt tárol

� Minden szín a 3 alapszín (piros,zöld,kék) keveréke

� Tulajdonságok� int red (piros összetevő, 0..255)� int red (piros összetevő, 0..255)

� int green (zöld összetevő, 0..255)

� int blue (kék összetevő, 0..255)

� Példánya változtathatatlan

� Minden komponensnek van egy háttérszíne és egy előtérszíne (betűszíne)

� Konstans szín objektumokat definiál: Color.black, Color.blue, Color.white, ...

Page 37: JAVA PROGRAMOZÁSpallaszlo/java/eloadas/4.Eloadas.pdfBetű, szín 36 Colorosztály RGB színt tárol Minden szín a 3 alapszín (piros,zöld,kék) keveréke Tulajdonságok int red

Betű, szín37

� SystemColor osztály

� Rendszer által használt színeket definiál: SystemColor.info, SystemColor.infoText, SystemColor.desktop, ...

� Példa:

lb = new JLabel("Szöveg:");

lb.setFont(new Font(”Arial",Font.BOLD,24));

lb.setBackground(SystemColor.control);

lb.setForeground(Color.red);

Page 38: JAVA PROGRAMOZÁSpallaszlo/java/eloadas/4.Eloadas.pdfBetű, szín 36 Colorosztály RGB színt tárol Minden szín a 3 alapszín (piros,zöld,kék) keveréke Tulajdonságok int red

Betű, szín - Példa38

Page 39: JAVA PROGRAMOZÁSpallaszlo/java/eloadas/4.Eloadas.pdfBetű, szín 36 Colorosztály RGB színt tárol Minden szín a 3 alapszín (piros,zöld,kék) keveréke Tulajdonságok int red

JComponent osztály39

� Absztrakt osztály

� A képernyőn megjelenő Swing komponensek közös őse

� Font font

� Cursor cursor

� Border border

� Dimension maximumSizeDimension minimumSize

� Mezők� static final float

CENTER_ALIGNMENT, ...

� Jellemzők� Color background

Color foreground

� boolean opaque

Dimension minimumSizeDimension preferredSize

� float alignmentXfloat alignmentY

� String toolTipText

� boolean visible

� boolean enabled

� boolean requestFocusEnabled

Page 40: JAVA PROGRAMOZÁSpallaszlo/java/eloadas/4.Eloadas.pdfBetű, szín 36 Colorosztály RGB színt tárol Minden szín a 3 alapszín (piros,zöld,kék) keveréke Tulajdonságok int red

JComponent osztály - Jellemzők40

� Helyzet, méret� int getX()

int getY()

� int getWidth()int getHeight()

� void setSize(int width, int height)

� boolean contains(int x, int y)boolean contains(Point p)int getHeight()

� Rectangle getBounds()

� Point getLocation()Point getLocationOnScreen()

� void setBounds(int x, int y, int width, int height)void setLocation(int x, int y)

boolean contains(Point p)

Page 41: JAVA PROGRAMOZÁSpallaszlo/java/eloadas/4.Eloadas.pdfBetű, szín 36 Colorosztály RGB színt tárol Minden szín a 3 alapszín (piros,zöld,kék) keveréke Tulajdonságok int red

JComponent osztály - Jellemzők41

� Láthatóság, érvényesség� boolean isDisplayable()

� void validate()

� Fókusz, eseményfogadásboolean hasFocus()� boolean hasFocus()

� void requestFocus()

� void transferFocus()

� Szülő, állapot� Container getParent()

� String toString()

� void list()

Page 42: JAVA PROGRAMOZÁSpallaszlo/java/eloadas/4.Eloadas.pdfBetű, szín 36 Colorosztály RGB színt tárol Minden szín a 3 alapszín (piros,zöld,kék) keveréke Tulajdonságok int red

A java.awt.Container osztálY42

� Konténer-komponensek közös őse

� Jellemzők:

� LayoutManager layoutMgr

� Komponens hozzáadása, kivétele� Komponens hozzáadása, kivétele

� Component add(Component comp)Component add(Component comp, int index)

� void remove(Component comp)void remove(int index)void removeAll()

Page 43: JAVA PROGRAMOZÁSpallaszlo/java/eloadas/4.Eloadas.pdfBetű, szín 36 Colorosztály RGB színt tárol Minden szín a 3 alapszín (piros,zöld,kék) keveréke Tulajdonságok int red

A java.awt.Container osztály43

� Gyerekkomponensek� int getComponentCount()

� Component[] getComponents()

� Component getComponent(int n)

� Component getComponentAt(int x, int y)� Component getComponentAt(int x, int y)Component getComponentAt(Point p)

� boolean isAncestorOf(Component comp)

� Elrendezés� Dimension getMaximumSize()

� Dimension getMinimumSize()

� Dimension getPreferredSize()

Page 44: JAVA PROGRAMOZÁSpallaszlo/java/eloadas/4.Eloadas.pdfBetű, szín 36 Colorosztály RGB színt tárol Minden szín a 3 alapszín (piros,zöld,kék) keveréke Tulajdonságok int red

A java.awt.Window osztály44

� Összes AWT és Swing ablak komponens közös őse

� Utódai: Frame, JFrame, Dialog, JDialog, Jwindow

� Metódusok:� void pack()

void show()� void show()

� boolean isShowing()void hide()

� void setLocationRelativeTo(Component c)

� void toBack()void toFront()

� void dispose()

Page 45: JAVA PROGRAMOZÁSpallaszlo/java/eloadas/4.Eloadas.pdfBetű, szín 36 Colorosztály RGB színt tárol Minden szín a 3 alapszín (piros,zöld,kék) keveréke Tulajdonságok int red

A java.awt.Window osztály45

� Metódusok:

� void addWindowListener(WindowListener l)

� void removeWindowListener(WindowListener l)

� Component getFocusOwner()

� Window getOwner()

� Window[] getOwnedWindows()

� Aktív ablak

� Az operációs rendszerben pontosan egy alkalmazás aktív, egy alkalmazásban pedig pontosan egy ablak aktív.

Page 46: JAVA PROGRAMOZÁSpallaszlo/java/eloadas/4.Eloadas.pdfBetű, szín 36 Colorosztály RGB színt tárol Minden szín a 3 alapszín (piros,zöld,kék) keveréke Tulajdonságok int red

A JFrame osztály46

� Közvetlen ős: java.awt.Frame

� A Swing egyetlen natív komponense

� Keret: legfelső szintű ablak, nincs tulajdonosa

Van szegélye, ikonja, címe és menüsora� Van szegélye, ikonja, címe és menüsora

� Komponenseit a tartalompanelbe (content pane) kell tenni

Page 47: JAVA PROGRAMOZÁSpallaszlo/java/eloadas/4.Eloadas.pdfBetű, szín 36 Colorosztály RGB színt tárol Minden szín a 3 alapszín (piros,zöld,kék) keveréke Tulajdonságok int red

A JFrame osztály47

� Jellemzők

� String title

� Image iconImage

� MenuBar menuBar� MenuBar menuBar

� boolean resizable

� int state

� Metódusok

� Container getContentPane()

� setDefaultCloseOperation(int operation)

� static Frame[] getFrames()

Page 48: JAVA PROGRAMOZÁSpallaszlo/java/eloadas/4.Eloadas.pdfBetű, szín 36 Colorosztály RGB színt tárol Minden szín a 3 alapszín (piros,zöld,kék) keveréke Tulajdonságok int red

A JFrame osztály - Példa48

Page 49: JAVA PROGRAMOZÁSpallaszlo/java/eloadas/4.Eloadas.pdfBetű, szín 36 Colorosztály RGB színt tárol Minden szín a 3 alapszín (piros,zöld,kék) keveréke Tulajdonságok int red

Könyvészet49

� 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.2011.