33
 1 2005.11.28.  Alkalmazásfejlesztési technológia Késztette: Csöndes Emese  1  Alkalmazásfejlesztési technológia Magasabb szint ű komponensek Tanár: Csöndes Emese E-mail: [email protected]  Adatbázis -kezelés Tanár: Seres Iván E-mail: [email protected]  2005.11.28.  Alkalmazásfejlesztési technológia Késztette: Csöndes Emese  2  Vizsgakövetelmények  Felkészülést támogató anyagok http://www.gdf.hu/Segedletek/270Fo.htm  Alkalmazásfejleszt ési technológiák tantárgy nál Vizsga Elméleti rész: Teszt Gyakorlati rész: Kötelez ő feladat bemutatása  2005.11.28.  Alkalmazásfejlesztési technológia Késztette: Csöndes Emese  3 Magasabb szintű komponensek 1. Megjelenítési technikák (szegélyek, segédszöveg…) 2. Elrendezési stratégiák (kártyás, box…) 3. Speciális panelek (füles, többrétegű, görgető…) 4.  Adatbeviteli lehetőségek (speciális szövegmezők…) 5. Kijelzők (állapotjelző, nyomkövetés) 6. Vezérlési technikák (felbukkanó menü, eszközsor…) 7. Fastruktúra 8. Táblázat 9. Dokumentumkezelés (stílusos szöveg kezelése) 10.  Alkalmazások közötti adatcsere (drag and drop technika) 11. Java babok 2005.11.28.  Alkalmazásfejlesztési technológia Késztette: Csöndes Emese  4 1. Megjelenítési technikák 1.1 Komponensek kinézetének meghatározása 1.2 Menü megjelenítésének finomítása 1.3 Szegélyezés 1.4 Segédszöveg 1.5 HTML-t értelmező komponensek 2005.11.28.  Alkalmazásfejlesztési technológia Késztette: Csöndes Emese  5 Minden komponensnek van egy alapkinézete. Szeretnénk a megszokott megjelenítést felváltani egy sajátos megjelenítési formára.  A megjelen ítés megváltoztatásának mechanizmusát a lista segítségével mutatjuk be. 1.1 Komponensek kinézetének meghatározása 2005.11.28.  Alkalmazásfejlesztési technológia Késztette: Csöndes Emese  6 Felada t - Render erTesz t Van egy g yümölcsneveket tartalmazó tömbünk, melynek tartalmát háromféleképpen jelenítjük meg. Mindhárom esetben használjunk listát.  Az első lista az alapértelmezett megjelenítést használja, vagyis az adatok szöveges reprezentációja jelenjen meg. (RendererTeszt.java)  A második lista a gyümölcsneveknek megfelel ő kép fájlokat jelenítse meg. (ListaMegjelenito1.java)  A harmadik lista az általunk Java nyelv en megfogalmazott rajzokat jelenítse meg. (ListaMegjelenito2.java)

AlkFejlKomp

  • Upload
    zocsi

  • View
    26

  • Download
    0

Embed Size (px)

Citation preview

5/14/2018 AlkFejlKomp - slidepdf.com

http://slidepdf.com/reader/full/alkfejlkomp 1/331

2005.11.28. Alkalmazásfejlesztési technológia

Késztette: Csöndes Emese 1

 Alkalmazásfejlesztési technológia

Magasabb szintű komponensekTanár: Csöndes EmeseE-mail: [email protected]

 Adatbázis-kezelésTanár: Seres IvánE-mail: [email protected]

2005.11.28. Alkalmazásfejlesztési technológia

Késztette: Csöndes Emese 2

 Vizsgakövetelmények 

Felkészülést támogató anyagok http://www.gdf.hu/Segedletek/270Fo.htm

 Alkalmazásfejlesztési technológiák tantárgynál

Vizsga Elméleti rész: Teszt

Gyakorlati rész: Kötelező feladat bemutatása

2005.11.28. Alkalmazásfejlesztési technológia

Késztette: Csöndes Emese 3

Magasabb szintű komponensek 

1. Megjelenítési technikák (szegélyek, segédszöveg…)2. Elrendezési stratégiák (kártyás, box…)3. Speciális panelek (füles, többrétegű, görgető…)4.  Adatbeviteli lehetőségek (speciális szövegmezők…)5. Kijelzők (állapotjelző, nyomkövetés)6. Vezérlési technikák (felbukkanó menü, eszközsor…)7. Fastruktúra8. Táblázat9. Dokumentumkezelés (stílusos szöveg kezelése)10.  Alkalmazások közötti adatcsere (drag and drop

technika)11. Java babok

2005.11.28. Alkalmazásfejlesztési technológia

Késztette: Csöndes Emese 4

1. Megjelenítési technikák 

1.1 Komponensek kinézeténekmeghatározása

1.2 Menü megjelenítésének finomítása

1.3 Szegélyezés

1.4 Segédszöveg

1.5 HTML-t értelmező komponensek

2005.11.28. Alkalmazásfejlesztési technológia

Késztette: Csöndes Emese 5

Minden komponensnek van egyalapkinézete.

Szeretnénk a megszokott megjelenítéstfelváltani egy sajátos megjelenítési formára.

 A megjelenítés megváltoztatásánakmechanizmusát a lista segítségével mutatjukbe.

1.1 Komponensek kinézetének meghatározása

2005.11.28. Alkalmazásfejlesztési technológia

Késztette: Csöndes Emese 6

Feladat - RendererTesztVan egy gyümölcsneveket tartalmazó tömbünk,melynek tartalmát háromféleképpen jelenítjük meg.Mindhárom esetben használjunk listát.

 Az első lista az alapértelmezett megjelenítésthasználja, vagyis az adatok szövegesreprezentációja jelenjen meg. (RendererTeszt.java)

 A második lista a gyümölcsneveknek megfelelő képfájlokat jelenítse meg. (ListaMegjelenito1.java)

 A harmadik lista az általunk Java nyelvenmegfogalmazott rajzokat jelenítse meg.(ListaMegjelenito2.java)

5/14/2018 AlkFejlKomp - slidepdf.com

http://slidepdf.com/reader/full/alkfejlkomp 2/332

2005.11.28. Alkalmazásfejlesztési technológia

Késztette: Csöndes Emese 7 2005.11.28. Alkalmazásfejlesztési technológia

Késztette: Csöndes Emese 8

String[] adatok=new String[]{"alma", "eper","meggy", "alma", "narancs", "meggy"};

DefaultListModel dlm=new DefaultListModel();

JList lista1 = new JList();

JList lista2 = new JList();

JList lista3 = new JList();

. . .

2005.11.28. Alkalmazásfejlesztési technológia

Késztette: Csöndes Emese 9

for(int i=0; i<adatok.length; i++){

dlm.addElement(adatok[i]);

}

lista1.setModel(dlm);

lista2.setCellRenderer(new ListaMegjelenito1());

lista2.setModel(dlm);

lista3.setCellRenderer(new ListaMegjelenito2());

lista3.setModel(dlm);

2005.11.28. Alkalmazásfejlesztési technológia

Késztette: Csöndes Emese 10

ListaMegjelenito1, ListaMegjelenito2osztályunknak a következő előírásokat kellteljesítenie:- Őse a JLabel, mivel a lista elemeinek

megjelenítése JLabel segítségével történik.

- Implementálja a ListCellRenderer interfészt.

- Kifejti az interfész egyetlen metódusát

getListCellRendererComponent(…), mely amegjelenést határozza meg.

2005.11.28. Alkalmazásfejlesztési technológia

Késztette: Csöndes Emese 11

Osztálydiagram

2005.11.28. Alkalmazásfejlesztési technológia

Késztette: Csöndes Emese 12

5/14/2018 AlkFejlKomp - slidepdf.com

http://slidepdf.com/reader/full/alkfejlkomp 3/333

2005.11.28. Alkalmazásfejlesztési technológia

Késztette: Csöndes Emese 13

ListCellRenderer interfész

Csomag: javax.swing

Deklaráció: public interface ListCellRenderer Metódusa

public ComponentgetListCellRendererComponent(

JList list,

Object value,

int index,

boolean isSelected,

boolean cellHasFocus

)2005.11.28.

 Alkalmazásfejlesztési technológiaKésztette: Csöndes Emese 14

public class ListaMegjelenito1 extends JLabelimplements ListCellRenderer {

public ListaMegjelenito1() {}public Component getListCellRendererComponent(

JList list,Object value,int index,boolean isSelected,boolean cellHasFocus){

setHorizontalAlignment(JLabel.CENTER);setIcon(new ImageIcon("images/"+

value.toString()+".jpg"));return this;

}}

2005.11.28. Alkalmazásfejlesztési technológia

Késztette: Csöndes Emese 15

Saját rajzos megjelenítéseprotected void paintComponent(Graphics g){

if(gyumi.equals("alma"))

alma(g);

else if(gyumi.equals("eper"))

eper(g);

else if(gyumi.equals("meggy"))

meggy(g);

else if(gyumi.equals("narancs"))

narancs(g);

}

2005.11.28. Alkalmazásfejlesztési technológia

Késztette: Csöndes Emese 16

Lista elemeinek elrenedzése

setLayoutOrientation(…)

2005.11.28. Alkalmazásfejlesztési technológia

Késztette: Csöndes Emese 17

 JList osztály Jellemzők

int fixedCellWidth

int fixedCellHeight Megadja a listaelem szélességét/magasságát.

Color selectedBackground

Color selectedForeground Megadja a kiválasztott elem háttér- és előtérszínét.

Metódusok

void setCellRenderer(ListCellRenderer l) Beállítja, hogy a lista elemeit az általunk meghatározott

formában jelenítse meg.

2005.11.28. Alkalmazásfejlesztési technológia

Késztette: Csöndes Emese 18

1.2 Menü megjelenítésének finomítása

 A Box objektumok az adott területenszétterülnek (vagyis kitöltik a rendelkezésreálló maximális területet) és láthatatlanok (így jelenlétük nem észlelhető, csak hatásuk).

 A Box osztály objektumai bármely konténer komponens (menü, eszközsor, panel…)esetében alkalmazható.

5/14/2018 AlkFejlKomp - slidepdf.com

http://slidepdf.com/reader/full/alkfejlkomp 4/334

2005.11.28. Alkalmazásfejlesztési technológia

Késztette: Csöndes Emese 19

Háromféle megvalósítása van:

Box

Glue

Strut

2005.11.28. Alkalmazásfejlesztési technológia

Késztette: Csöndes Emese 20

Box

 A programba beillesztve nem látjuk hatását. Láthatatlan méret nélküli komponensként

vesz részt a megjelenítésben.

Szerepe: tetszőleges, Component-bőlszármaztatott komponens elhelyezhető benne.

 A BoxLayout-os elrendezésmegvalósításánál alkalmazzuk.

2005.11.28. Alkalmazásfejlesztési technológia

Késztette: Csöndes Emese 21

Glue

Mindkét, vagy a kitüntetett irány maximálisanelfoglalható területét veszi fel méretként.

Strut

Meghatározható a lefoglalt terület mérete. Akár mindkét irányba, akár csak az egyik,kitüntetett irányba.

2005.11.28. Alkalmazásfejlesztési technológia

Késztette: Csöndes Emese 22

 Az ábrán látható menü megvalósítása:

menusor.add(mFajl);

menusor.add(mSzerk);

menusor.add(mBeall);

menusor.add(Box.createHorizontalGlue());

menusor.add(mSugo);

menusor.add(mKi);

2005.11.28. Alkalmazásfejlesztési technológia

Késztette: Csöndes Emese 23

1.3 Szegélyezés

Dekorációs cél, a felületi elemek kiemelése,összetartozó elemek behatárolása

BorderFactory osztály

create és az adott szegély nevénekmegadása

például:BorderFactory.createBevelBorder(…)

2005.11.28. Alkalmazásfejlesztési technológia

Késztette: Csöndes Emese 24

EmptyBorder (üres szegély): láthatatlanszegély; levegősebb megjelenítéshezalkalmazzuk, például az ablakkerettől valóeltávolításhoz.

5/14/2018 AlkFejlKomp - slidepdf.com

http://slidepdf.com/reader/full/alkfejlkomp 5/335

2005.11.28. Alkalmazásfejlesztési technológia

Késztette: Csöndes Emese 25

LineBorder (vonalas szegély): adott színű,adott vastagságú sima vonalas szegély.

2005.11.28. Alkalmazásfejlesztési technológia

Késztette: Csöndes Emese 26

BevelBorder: a felülethez képest vagybemélyedés (Lowered) vagy kitüremkedés(Raised) hatását keltő 3D-s szegély.

static Border createBevelBorder(int type, Color highlightOuter, Color highlightInner,Color shadowOuter, Color shadowInner)

type: Lowered, Raised

2005.11.28. Alkalmazásfejlesztési technológia

Késztette: Csöndes Emese 27

setBackground(new Color(255,0,255));BorderFactory.createBevelBorder(

BevelBorder.RAISED,new Color(255,255,255),

new Color(255,168,255),new Color(84,0,84),new Color(168,0,168));

2005.11.28. Alkalmazásfejlesztési technológia

Késztette: Csöndes Emese 28

CompoundBorder (összetett szegély): bármelykét szegély kombinációja. A megadottszegélyek egyike külső, másik a belső szegélyként jelenik meg.

static CompoundBorder CreateCompoundBorder(

Border outsideBorder,Border insideBorder)

2005.11.28. Alkalmazásfejlesztési technológia

Késztette: Csöndes Emese 29

EtchedBorder: vonalas 3D szegély, melynektípusa (Raised, Lowered), megadható.

static Border createEtchedBorder(int type,Color highlight, Color shadow)

highlight: Color.cyanshadow: Color.blue

2005.11.28. Alkalmazásfejlesztési technológia

Késztette: Csöndes Emese 30

MatteBorder: tetszőleges kép szegélykéntvaló alkalmazása.

 A szegély a következőképpen áll elő:a bal felső sarokból kiindulva tapéta jelleggellefekteti a kiválasztott képet a keretezendő felületegészén, majd ebből megjeleníti a szegélyterületét. Vagyis érdemes olyan képet választani,mely mozaikos elrendezésben is összefüggő hatást biztosít.

5/14/2018 AlkFejlKomp - slidepdf.com

http://slidepdf.com/reader/full/alkfejlkomp 6/336

2005.11.28. Alkalmazásfejlesztési technológia

Késztette: Csöndes Emese 31

static MatteBorder createMatteBorder(int top,int left, int bottom, int right, Color color)

static MatteBorder createMatteBorder(int top,int left, int bottom, int right, Icon tileIcon)

createMatteBorder(1,3,5,7,Color.yellow)createMatteBorder(7,5,3,1, )

)

2005.11.28. Alkalmazásfejlesztési technológia

Késztette: Csöndes Emese 32

TitledBorder (címkés szegély): címkévelkiegészített tetszőleges szegély. A címkeszegélyhez igazított helyzete mind vízszintes

irányban (LEFT, CENTER, RIGHT, LEADING,

TRAILING), mind függőleges irányban( ABOVE_TOP, BELOW_TOP, TOP, ABOVE_BOTTOM,

BELOW_BOTTOM, BOTTOM) meghatározható

static TitledBorder createTitledBorder(

Border border, String title,int titleJustification, int titlePosition,Font titleFont, Color titleColor)

2005.11.28. Alkalmazásfejlesztési technológia

Késztette: Csöndes Emese 33 2005.11.28. Alkalmazásfejlesztési technológia

Késztette: Csöndes Emese 34

1.4 Segédszöveg 

Minden komponenshez hozzárendelhető

 A komponens fölött várakozó egér hatására jelenik meg

Célja: komponens használatát segítő, magyarázó

információ megjelenítése, egyfajta gyors segítség nyújtás.

2005.11.28. Alkalmazásfejlesztési technológia

Késztette: Csöndes Emese 35

JLabel lb=new JLabel("Itt a piros?");lb.setToolTipText("Nem nyert! :(");

2005.11.28. Alkalmazásfejlesztési technológia

Késztette: Csöndes Emese 36

1.5 HTML-t értelmező

komponensek   A Javaban használt komponensek egy része

képes a szövegként kapott HTML tag-eketértelmezni

Ilyen komponensek például a címke,

segédszöveg,

gomb.

5/14/2018 AlkFejlKomp - slidepdf.com

http://slidepdf.com/reader/full/alkfejlkomp 7/337

2005.11.28. Alkalmazásfejlesztési technológia

Késztette: Csöndes Emese 37

Például:

2005.11.28. Alkalmazásfejlesztési technológia

Késztette: Csöndes Emese 38

String html="<html><body>Bármi megjeleníthető,"+"ami HTML tagek segítségével leírható"+

"<hr>"+ "például táblázat:<br>"+

"<table border=1>"+"<tr><td></td><td></td></tr>"+

"</table>"+

"<br>"+ "felsorolás:<br>"+

"<li>1</li>"+

"<li>2</li>"+

"</body> </html>";

lb.setText(html);

2005.11.28. Alkalmazásfejlesztési technológia

Késztette: Csöndes Emese 39

-Segédszöveg

setToolTipText("<html><h1><font color='#ff0000'> NYERT!!!</h1></html>")

2005.11.28. Alkalmazásfejlesztési technológia

Késztette: Csöndes Emese 40

- Gomb

bt.setText("<html><h1>G</h1><h2>O</h2><h3>M</h3>

<h4>B</h4></html>");

2005.11.28. Alkalmazásfejlesztési technológia

Késztette: Csöndes Emese 41

2. Elrendezési stratégiák Ismerjük már a:

sorfolytonos elrendezést

(FlowLayout),

a rácsos elrendezést

(GridLayout)

a határmenti elrendezést

(BorderLayout).

2005.11.28. Alkalmazásfejlesztési technológia

Késztette: Csöndes Emese 42

 A továbbiakban újabb elrendezéseketismerünk meg, melyek segítségünkrelesznek a felhasználói felület kialakításában. null layout

BoxLayout

CardLayout

GridBagLayout

ScrollPaneLayout

5/14/2018 AlkFejlKomp - slidepdf.com

http://slidepdf.com/reader/full/alkfejlkomp 8/338

2005.11.28. Alkalmazásfejlesztési technológia

Késztette: Csöndes Emese 43

2.1 null elrendezés

Nincsen előre meghatározott elrendezés. Minden komponens pozícióját és méretét meg

kell határoznunk.

2005.11.28. Alkalmazásfejlesztési technológia

Késztette: Csöndes Emese 44

2.2 BoxLayout elrendezés

 A komponenseket vízszintes, vagy függőlegesirányban helyezhetjük el egymás mellé.

2005.11.28. Alkalmazásfejlesztési technológia

Késztette: Csöndes Emese 45

 A komponens vonalhoz képesti helyzetét egy0 <= x <=1 értékkel adhatjuk meg (x floattípusú).

Megvalósítás:

pn1.setLayout(new BoxLayout(

pn1,BoxLayout.Y_AXIS));

pn2.setLayout(new BoxLayout(

pn2,BoxLayout.X_AXIS));

bt1.setAlignmentX((float) 0.5);

bt6.setAlignmentY((float) 1.0);

2005.11.28. Alkalmazásfejlesztési technológia

Késztette: Csöndes Emese 46

2.3 CardLayout elrendezés

2005.11.28. Alkalmazásfejlesztési technológia

Késztette: Csöndes Emese 47

Container panelok=new Container();

CardLayout cl = new CardLayout();panelok.setLayout(cl);

panelok.add(pn1, "fehér");

panelok.add(pn2, "sárga");

panelok.add(pn3, "narancs");

panelok.add(pn4, "piros");

panelok.add(pn5, "cián);

panelok.add(pn6, "kék");

panelok.add(pn7, "zöld");

panelok.add(pn8, "pink");

panelok.add(pn9, "mályva");

panelok.add(pn10, "fekete");

2005.11.28. Alkalmazásfejlesztési technológia

Késztette: Csöndes Emese 48

void btElso_actionPerformed(ActionEvent e) {

cl.first(panelok);}

void btUtolso_actionPerformed(ActionEvent e) {

cl.last(panelok);

}

void btElozo_actionPerformed(ActionEvent e) {

cl.previous(panelok);

}

void btKov_actionPerformed(ActionEvent e) {

cl.next(panelok);

}

5/14/2018 AlkFejlKomp - slidepdf.com

http://slidepdf.com/reader/full/alkfejlkomp 9/339

2005.11.28. Alkalmazásfejlesztési technológia

Késztette: Csöndes Emese 49

2.4 GridBagLayout elrendezés

Rugalmas elrendezés menedzser. Rendszertelen rácsszerkezetben helyezi el a

komponenseket. Egy komponens akár egy, akár több cellát

fedhet le. Egy cella csak egy komponenshez tartozhat.  A komponens elhelyezkedésének

meghatározását segíti a GridBagConstrainsosztály objektuma.

2005.11.28. Alkalmazásfejlesztési technológia

Késztette: Csöndes Emese 50

000,0,0,0VERTICALCENTER 0.00.03110 bt5

000,0,0,0HORIZONTALCENTER 0.00.01400 bt4

000,0,0,0VERTICALCENTER 0.00.03111 bt3

000,0,0,0BOTHCENTER 0.00.02212 bt2

000,0,0,0HORIZONTALCENTER 0.00.01232 bt1

dydxinsetsfillanchorwywxhwyxtul.komp.

000,0,0,0VERTICALCENTER 0.00.03110 bt5

000,0,0,0HORIZONTALCENTER 0.00.01400 bt4

000,0,0,0VERTICALCENTER 0.00.03111 bt3

000,0,0,0BOTHCENTER 0.00.02212 bt2

000,0,0,0HORIZONTALCENTER 0.00.01232 bt1

dydxinsetsfillanchorwywxhwyxtul.komp.

2005.11.28. Alkalmazásfejlesztési technológia

Késztette: Csöndes Emese 51 2005.11.28. Alkalmazásfejlesztési technológia

Késztette: Csöndes Emese 52

2.5 ScrollPaneLayout elrendezés

9 részre oszlik

Ezt az elrendezést használja a JScrollPane.

2005.11.28. Alkalmazásfejlesztési technológia

Késztette: Csöndes Emese 53

3. Speciális panelek 3.1 Többoldalas panel

3.2 Kettéosztható panel

3.3 Görgethető panel

3.4 Többrétegű panel

3.5 Belső ablakot tartalmazó panel

2005.11.28. Alkalmazásfejlesztési technológia

Késztette: Csöndes Emese 54

Többoldalas panel, mely egymás elé helyezett,

fülek segítségével elérhető panelokból áll. Kettéosztható panel, mely egy területen két panelt

 jelenít meg egymás mellett, vagy egymás alatt.Beállítható, hogy a panelek hogyan osztozzanak aterületen.

Görgethető panel, mely adott területét mutatja csaka teljes panelnek, a többi rész görgetéssegítségével tehető láthatóvá.

Többrétegű panel, mely a rajta elhelyezettpanelokat rétegekként kezeli, hozzájuk prioritástrendel, ami meghatározza a panelok sorrendjét, ésez által a látható területeket is.

Belső ablakot tartalmazó panel, mely atöbbablakos megjelenítést teszi lehetővé.

5/14/2018 AlkFejlKomp - slidepdf.com

http://slidepdf.com/reader/full/alkfejlkomp 10/3310

2005.11.28. Alkalmazásfejlesztési technológia

Késztette: Csöndes Emese 55

3.1 Többoldalas panel - JTabbedPane

Egymás elé helyezett, fülek segítségévelelérhető panelokból áll.

 A többoldalas panel kártyás elrendezéstalkalmaz (CardLayout).

2005.11.28. Alkalmazásfejlesztési technológia

Késztette: Csöndes Emese 56

Egy fül létrehozása úgy, hogy kép és felirat islegyen rajta:JPanel pnK = new JPanel();JTabbedPane tp=new JTabbedPane();

tp.addTab("Kutyák",new ImageIcon("images/D.gif"), pnK);

2005.11.28. Alkalmazásfejlesztési technológia

Késztette: Csöndes Emese 57

3.2 Kettéosztható panel - JSplitPane Két komponenst szeretnénk egyidejűleg

megjeleníteni úgy, hogy a láthatóságiarányuk a program futása közbenváltoztatható legyen.

VERTICAL_SPLIT HORIZONTAL_SPLIT

2005.11.28. Alkalmazásfejlesztési technológia

Késztette: Csöndes Emese 58

 A kettéosztó panelnél a következő beállításokat kell elvégeznünk:JSplitPane splitPane =

new JSplitPane();

Vízszintes felosztású legyensplitPane.setOrientation(

JSplitPane.VERTICAL_SPLIT);

Mindkét tartományába helyezzünk el egy-egy panelt

splitPane.add(pnB, JSplitPane.LEFT);splitPane.add(pnJ, JSplitPane.RIGHT);

 A felosztás gombnyomásra maximalizálható legyensplitPane.setOneTouchExpandable(true);

2005.11.28. Alkalmazásfejlesztési technológia

Késztette: Csöndes Emese 59

3.3 Görgethető

panel - JScrollPane Olyan esetekben alkalmazunk, mikor a látható

terület nem tudja lefedni teljesen a látni kívántterületet.

 A görgethető panelelrendezésmenedzserea ScrollPaneLayout.

2005.11.28. Alkalmazásfejlesztési technológia

Késztette: Csöndes Emese 60

5/14/2018 AlkFejlKomp - slidepdf.com

http://slidepdf.com/reader/full/alkfejlkomp 11/3311

2005.11.28. Alkalmazásfejlesztési technológia

Késztette: Csöndes Emese 61

JViewport vonalzoV=new JViewport();

JViewport vonalzoF=new JViewport();

JScrollPane sp = new JScrollPane();

JLabel lbKep = new JLabel(new

ImageIcon("images/kep.jpg"));JLabel lbV = new JLabel(

new ImageIcon("images/vonalzoV.jpg"));

JLabel lbF = new JLabel(

new ImageIcon("images/vonalzoF.jpg"));

lbKep.setHorizontalAlignment(SwingConstants.LEFT);

lbKep.setVerticalAlignment(SwingConstants.TOP);

vonalzoV.add(lbV, null);

vonalzoF.add(lbF, null);

sp.setRowHeader(vonalzoF);

sp.setColumnHeader(vonalzoV);

sp.getViewport().add(lbKep, null);

2005.11.28. Alkalmazásfejlesztési technológia

Késztette: Csöndes Emese 62

3.4 Többréteg ű panel - JLayeredPane

Olyan esetekbenalkalmazzuk, mikor amegjeleníteni kívántelemek között prioritásisorrendet szeretnénkérvényesíteni.

2005.11.28. Alkalmazásfejlesztési technológia

Késztette: Csöndes Emese 63 2005.11.28. Alkalmazásfejlesztési technológia

Késztette: Csöndes Emese 64

Előredefiniált rétegek 0

100

200

300

400

2005.11.28. Alkalmazásfejlesztési technológia

Késztette: Csöndes Emese 65

JLayeredPane lp = new JLayeredPane();

JLabel lb=new JLabel(„üzenet”);

int maxSzint=0;

lp.add(lb, new Integer(++maxSzint));

lp.setLayer(lb,maxSzint);

2005.11.28. Alkalmazásfejlesztési technológia

Késztette: Csöndes Emese 66

3.5 Belső ablakokat tartalmazó panel –  JDesktopPane Ha a megszokott viselkedési forma szerint

szeretnénk belső ablakainkat kezelni, akkor a választott panel a többrétegű panel egyspeciális leszármazottja, a JDesktopPanelegyen.

5/14/2018 AlkFejlKomp - slidepdf.com

http://slidepdf.com/reader/full/alkfejlkomp 12/3312

2005.11.28. Alkalmazásfejlesztési technológia

Késztette: Csöndes Emese 67 2005.11.28. Alkalmazásfejlesztési technológia

Késztette: Csöndes Emese 68

Belső ablak létrehozása

JInternalFrame(String title, // a belsőablak címe

boolean resizable, // átméretezhető-e

boolean closable, // bezárható-e

boolean maximizable,// maximalizálható-e

boolean iconifiable) // ikonizálható-e

2005.11.28. Alkalmazásfejlesztési technológia

Késztette: Csöndes Emese 69

Főprogramban:

JDesktopPane dp=new JDesktopPane();

dp.add(new BelsoAblak(++db));

public class BelsoAblak extends

JInternalFrame {

public BelsoAblak(int db) {

super(””+db+”. Ablak”, true, true,

false, true);setVisible(true);

}

}

2005.11.28. Alkalmazásfejlesztési technológia

Késztette: Csöndes Emese 70

 A belső ablakhoz tartozó eseményfigyelő

internalFrameActivated()

internalFrameClosed()

internalFrameClosing()

internalFrame-

Deactivated()

internalFrame-

Deiconified()

internalFrameIconified()

internalFrameOpened()

addInternal-

FrameListener 

InternalFrame-

Listener 

InternalFrame-

Event

 Lekezel ő metódus Felf  ű  ző 

metódus

 Figyel ő 

interfész

 Esemény

osztály

2005.11.28. Alkalmazásfejlesztési technológia

Késztette: Csöndes Emese 71

 Az opciópanel (JOptionPane) belső

 ablakokra vonatkozó lehetőségei

showInternalConfirmDialog(…)

showInternalInputDialog(…)

showInternalMessageDialog(…)

showInternalOptionDialog(…)

2005.11.28. Alkalmazásfejlesztési technológia

Késztette: Csöndes Emese 72

 JDesktopPane - DesktopManager A DesktopManager interfész segítségével a

JDesktopPane-en elhelyezett belső ablakokállapotát módosíthatjuk.

Legegyszer űbb implementációját aDefaultDesktopManager osztály adja.

5/14/2018 AlkFejlKomp - slidepdf.com

http://slidepdf.com/reader/full/alkfejlkomp 13/3313

2005.11.28. Alkalmazásfejlesztési technológia

Késztette: Csöndes Emese 73

Pl:JDesktopPane dp = new JDesktopPane();

DefaultDesktopManager ddm =

new DefaultDesktopManager();

JInternalFrame iF= new JInternalFrame(„Belső ablak”);

dp.setDesktopManager(ddm);

dp.add(iF);

iF.isIconifiable();

iF.setIconifiable(false);

ddm.iconifyFrame(iF);

2005.11.28. Alkalmazásfejlesztési technológia

Késztette: Csöndes Emese 74

void activateFrame(JInternalFrame f) void beginDraggingFrame(JComponent f) void beginResizingFrame(JComponent f, int direction) void closeFrame(JInternalFrame f)

void deactivateFrame(JInternalFrame f) void deiconifyFrame(JInternalFrame f) void dragFrame(JComponent f, int newX, int newY) void endDraggingFrame(JComponent f) void endResizingFrame(JComponent f) void iconifyFrame(JInternalFrame f) void maximizeFrame(JInternalFrame f) void minimizeFrame(JInternalFrame f) void openFrame(JInternalFrame f) void resizeFrame(JComponent f, int newX, int newY, int newWidth, int

newHeight) void setBoundsForFrame(JComponent f, int newX, int newY, int

newWidth, int newHeight)

2005.11.28. Alkalmazásfejlesztési technológia

Késztette: Csöndes Emese 75

4. Adatbeviteli lehetőségek 

4.1 Értékkiválasztó görgetősáv – JSlider 

4.2 JSpinner osztály és a hozzákapcsolódó modellek

4.3 Formázott beviteli mező –JFormattedTextField

4.4 Jelszó mező – JPasswordField

2005.11.28. Alkalmazásfejlesztési technológia

Késztette: Csöndes Emese 76

2005.11.28. Alkalmazásfejlesztési technológia

Késztette: Csöndes Emese 77

4.1 Értékkiválasztó görgetősáv – JSlider

2005.11.28. Alkalmazásfejlesztési technológia

Késztette: Csöndes Emese 78

JSlider slider = new JSlider();

Hashtable sebesseg=new Hashtable();

sebesseg.put(new Integer(0), new JLabel("Stop"));

sebesseg.put(new Integer(100), new JLabel("Lassú"));

sebesseg.put(new Integer(500), new JLabel("Normál"));

sebesseg.put(new Integer(1000), new JLabel("Gyors"));

5/14/2018 AlkFejlKomp - slidepdf.com

http://slidepdf.com/reader/full/alkfejlkomp 14/3314

2005.11.28. Alkalmazásfejlesztési technológia

Késztette: Csöndes Emese 79

slider.setLabelTable(sebesseg);slider.setPaintLabels(true);slider.setOrientation(JSlider.VERTICAL);slider.setPaintTrack(true);slider.setPaintTicks(true);slider.setMinimum(0);slider.setMaximum(1000);slider.setMinorTickSpacing(100);slider.addChangeListener(this);…void slider_stateChanged(ChangeEvent e) {timer.setDelay(slider.getValue());

}

2005.11.28. Alkalmazásfejlesztési technológia

Késztette: Csöndes Emese 80

4.2 JSpinner osztály és a hozzákapcsolódó modellek 

Számok megjelenítéséhez a SpinnerNumberModel osztályáltal meghatározott modellt érdemes választani.

Dátum adatok megjelenítéséhez a SpinnerDateModel alegmegfelelőbb.

Egyéb, lista szer űenfelsorolt adatokmegjelenítéséhez aSpinnerListModel nyújtmegfelelő lehetőségeket.

2005.11.28. Alkalmazásfejlesztési technológia

Késztette: Csöndes Emese 81

SpinnerDateModelCalendar naptar = Calendar.getInstance();SpinnerDateModel sdm;Date aktDatum = naptar.getTime();naptar.add(Calendar.YEAR, -100);Date elsoDatum = naptar.getTime();naptar.add(Calendar.YEAR, +200);

Date utolsoDatum = naptar.getTime();sdm = new SpinnerDateModel(aktDatum,elsoDatum, utolsoDatum,Calendar.YEAR);

2005.11.28. Alkalmazásfejlesztési technológia

Késztette: Csöndes Emese 82

SpinnerListModel

JSpinner spLista = new JSpinner();

SpinnerListModel slm;

String[] listaElemek = new String[] {

"Hétf ő", "Kedd", "Szerda", "Csütörtök",

"Péntek", "Szombat", "Vasárnap"};

slm = new SpinnerListModel(listaElemek);

2005.11.28. Alkalmazásfejlesztési technológia

Késztette: Csöndes Emese 83

CyclingSpinnerListModel

public class CyclingSpinnerListModel extendsSpinnerListModel {public CyclingSpinnerListModel(Object[] values) {

super(values);firstValue = values[0];lastValue = values[values.length - 1];

}public Object getNextValue() {

…}public Object getPreviousValue() {

…}

}

2005.11.28. Alkalmazásfejlesztési technológia

Késztette: Csöndes Emese 84

JSpinner spKorbeLista = new JSpinner();

CyclingSpinnerListModel cslm;

cslm = new CyclingSpinnerListModel(listaElemek);

SpinnerNumberModelJSpinner spSzam = new JSpinner();

SpinnerNumberModel snm;

snm = new SpinnerNumberModel(50, 0, 100, 3);

5/14/2018 AlkFejlKomp - slidepdf.com

http://slidepdf.com/reader/full/alkfejlkomp 15/3315

2005.11.28. Alkalmazásfejlesztési technológia

Késztette: Csöndes Emese 85

Modellek beállítása

spDatum.setModel(sdm);

spLista.setModel(slm);

spKorbeLista.setModel(cslm);

spSzam.setModel(snm);

2005.11.28. Alkalmazásfejlesztési technológia

Késztette: Csöndes Emese 86

4.3 Formázott beviteli mező –  JFormattedTextField

 Az adatot megjeleníthetjük: Egyéni formátumban, melyet a mask karakterek

segítségével tetszés szerint határozhatunk meg. A mask összeállításában használhatókaraktereket a MaskFormatter osztály adja meg.

Számként, ebben azesetben a NumberFormatosztályt használjuk.

Dátumként, ekkor aDateFormat osztályt hívjuksegítségül.

2005.11.28. Alkalmazásfejlesztési technológia

Késztette: Csöndes Emese 87

NumberFormat szamForma, NumberFormatpenzForma;

MaskFormatter mobilForma;

szamForma=NumberFormat.getNumberInstance();szamForma.setMinimumFractionDigits(3);

penzForma=NumberFormat.getIntegerInstance();penzForma.setMinimumFractionDigits(0);

try {mobilForma = new MaskFormatter("(##)/###-##-##");

}catch (ParseException ex) {…..}

2005.11.28. Alkalmazásfejlesztési technológia

Késztette: Csöndes Emese 88

ftfSzam = new JFormattedTextField(szamForma);

ftfPenz = new JFormattedTextField(penzForma);

ftfTel = new JFormattedTextField(mobilForma);

ftfSzam.addPropertyChangeListener("value", this);

ftfPenz.addPropertyChangeListener("value", this);

ftfTel.addPropertyChangeListener("value", this);

2005.11.28. Alkalmazásfejlesztési technológia

Késztette: Csöndes Emese 89

public void propertyChange(PropertyChangeEvent e) {

Object source = e.getSource();if (source == ftfSzam) {

szam = ( (Number)ftfSzam.getValue()).doubleValue();

}

else if (source == ftfPenz) {

penz = ( (Number) ftfPenz.getValue()).longValue();

}

else if (source == ftfTel) {

mobil = ftfTel.getValue().toString();

}

}

2005.11.28. Alkalmazásfejlesztési technológia

Késztette: Csöndes Emese 90

Mask karakterek:

Bármely hexadecimális karakter (0-9, a-f vagy A-F).H

Joker karakter. Akármilyen karaktert takarhat.*

Bármely betű (Character.isLetter ).?

Bármely betű vagy szám (Character.isLetter vagy

Character.isDigit).A

Bármely betű kisbetűs formában (Character.isLowerCase).L

Bármely betű nagybetűs formában

(Character.isUpperCase).U

Speciális karakterek használatához szükséges karakter.' (aposztrof)

Számjegy (Character.isDigit).#

LeírásKarakter

5/14/2018 AlkFejlKomp - slidepdf.com

http://slidepdf.com/reader/full/alkfejlkomp 16/3316

2005.11.28. Alkalmazásfejlesztési technológia

Késztette: Csöndes Emese 91

Például:

irányítószám megadása: #### vezetéknév megadása: U*

általános rendszám megadása: ???-###

Ügyeljünk a speciális esetekre!

Például léteznek egyedi rendszámok.

2005.11.28. Alkalmazásfejlesztési technológia

Késztette: Csöndes Emese 92

4.4 Jelszó mező – JPasswordField

Olyan esetekben alkalmazzuk ezt akomponenst, ha nem szeretnénk láttatni abeírt karaktereket. leütött karakter értéke megmarad

egy jokerkarakter (echoChar ) képe jelenik meg

2005.11.28. Alkalmazásfejlesztési technológia

Késztette: Csöndes Emese 93

JProgressBar   Az osztályból létrehozott objektum a felület

komponenseként jeleníthető meg.

5. Kijelzők 

2005.11.28. Alkalmazásfejlesztési technológia

Késztette: Csöndes Emese 94

JProgressMonitor   Az osztályból létrehozott objektum külön

dialógusablakban jelenik meg.

2005.11.28. Alkalmazásfejlesztési technológia

Késztette: Csöndes Emese 95

6. Vezérlési technikák 6.1 Felbukkanó menü

6.2 Eszközsor 

6.3 Előre definiált eseményfigyelők

2005.11.28. Alkalmazásfejlesztési technológia

Késztette: Csöndes Emese 96

6.1 Felbukkanó menü Komponensekhez rendelt menü.

5/14/2018 AlkFejlKomp - slidepdf.com

http://slidepdf.com/reader/full/alkfejlkomp 17/3317

2005.11.28. Alkalmazásfejlesztési technológia

Késztette: Csöndes Emese 97

Elhelyezkedésük függhet: az adott komponenstől,

az egér aktuális pozíciójától,

de egy tetszőleges koordinátában ismegjeleníthetjük őket.

Nem láthatók állandóan, felbukkanásukvalamely eseményhez kapcsolódik.

Szerkezetét tekintve ugyanolyan, mint azáltalános menü.

2005.11.28. Alkalmazásfejlesztési technológia

Késztette: Csöndes Emese 98

 A felbukkanó menü egér eseményénekhatására jelenik meg abban az esetben, havan megjeleníthető példánya.

if (e.isPopupTrigger()) {

popup.show(e.getComponent(),e.getX(), e.getY());

}

 A saját eseményeit általában nem szoktákalkalmazni, hiszen azok csak a megjelenés,eltűnés, megszűnés állapotot kezelik le.

2005.11.28. Alkalmazásfejlesztési technológia

Késztette: Csöndes Emese 99

 popupMenuCanceled

 popupMenuWillBecome-

Invisible

 popupMenuWillBecome-

Visible

addPopupMenu-

Listener 

PopupMenu-

Listener 

PopupMenu-

Event

 Lekezel ő metódus Felf  ű  ző metódus Figyel ő 

interfész

 EsemOsztály

2005.11.28. Alkalmazásfejlesztési technológia

Késztette: Csöndes Emese 100

6.2 Eszközsor

 Az eszközsor ToolBarLayout elrendezésthasznál, mely a FlowLayoutelrendezésmenedzser leszármazottja.http://java.sun.com/developer/techDocs

/hi/repository/

2005.11.28. Alkalmazásfejlesztési technológia

Késztette: Csöndes Emese 101

6.3 Elő

re definiált eseményfigyelő

k  Egy alkalmazás számos eseményt kezel,

például egéreseményeket, billentyűeseményeket, …

Ugyanazt az eseményt a grafikus felületkülönböző helyeir ől generálhatjuk, például menükből, eszközsorból ...

2005.11.28. Alkalmazásfejlesztési technológia

Késztette: Csöndes Emese 102

 Az Action interfész egyspeciáliseseményfigyelőt(ActionListener) valósítmeg.

Legegyszer űbbimplementációját az

 AbstractAction osztályadja.

5/14/2018 AlkFejlKomp - slidepdf.com

http://slidepdf.com/reader/full/alkfejlkomp 18/3318

2005.11.28. Alkalmazásfejlesztési technológia

Késztette: Csöndes Emese 103

 Az AbstractAction osztálynak a következő leszármazottai vannak:

TextAction DefaultEditorKit.BeepAction DefaultEditorKit.CopyAction DefaultEditorKit.CutAction DefaultEditorKit.DefaultKeyTypedAction DefaultEditorKit.InsertBreakAction DefaultEditorKit.InsertContentAction DefaultEditorKit.InsertTabAction DefaultEditorKit.PasteAction StyledEditorKit.StyledTextAction

2005.11.28. Alkalmazásfejlesztési technológia

Késztette: Csöndes Emese 104

StyledEditorKit.StyledTextAction StyledEditorKit.AlignmentAction

StyledEditorKit.BoldAction

StyledEditorKit.FontFamilyAction

StyledEditorKit.FontSizeAction

StyledEditorKit.ForegroundAction

StyledEditorKit.ItalicAction

StyledEditorKit.UnderlineAction

2005.11.28. Alkalmazásfejlesztési technológia

Késztette: Csöndes Emese 105

 Az előre definiált eseményfigyelőket azalkalmazásainkban szabadon felhasználhatjuk.

mBetumeret.add(new StyledEditorKit.

FontSizeAction("12", 12));

mBetuszin.add(new StyledEditorKit.

ForegroundAction("Zöld", Color.green));

2005.11.28. Alkalmazásfejlesztési technológia

Késztette: Csöndes Emese 106

 A stílusjegyeknél külön változóba lementjükaz akciót, átnevezzük, és csak ezutánhelyezzük el a menün.

action = new StyledEditorKit.BoldAction();

action.putValue(Action.NAME, "Félkövér");

mBetustilus.add(

miFelkover=new JMenuItem(action));

2005.11.28. Alkalmazásfejlesztési technológia

Késztette: Csöndes Emese 107

 A betűtípusokat lekérjük a rendszertől, és az

így kapott eredmény alapján töltjük fel amenüt.

String[] fontok =Toolkit.getDefaultToolkit().getFontList();

for (int i = 0; i < fontok.length; i++) {

mBetutipus.add(

new StyledEditorKit.FontFamilyAction(

fontok[i],fontok[i]));

}

2005.11.28. Alkalmazásfejlesztési technológia

Késztette: Csöndes Emese 108

7. Fastruktúra négy elnevezést használunk a fa elemeire:

gyökér (root),

szülő (parent),

gyerek (child),

levél (leaf).

5/14/2018 AlkFejlKomp - slidepdf.com

http://slidepdf.com/reader/full/alkfejlkomp 19/3319

2005.11.28. Alkalmazásfejlesztési technológia

Késztette: Csöndes Emese 109

Fastruktúra létrehozása:

Objektum tömb segítségével Vektor segítségével

Hasítótábla segítségével

Fa csomópontok megadásával

2005.11.28. Alkalmazásfejlesztési technológia

Késztette: Csöndes Emese 110

Objektum tömb segítségével:

int i=0;for(char c='A'; c<='H'; c++)

o[i++]=""+c;

tree=new JTree(o);

2005.11.28. Alkalmazásfejlesztési technológia

Késztette: Csöndes Emese 111

 Vektor segítségével:

for(char c='A'; c<='H'; c++)

v.add(""+c);

tree=new JTree(v);

2005.11.28. Alkalmazásfejlesztési technológia

Késztette: Csöndes Emese 112

Hasítótábla segítségével:

for (char c = 'A'; c <= 'H'; c++) {

h.put("" + c, "" + c);

}

tree = new JTree(h);

2005.11.28. Alkalmazásfejlesztési technológia

Késztette: Csöndes Emese 113

Fa csomópontok megadásával:Változtatható fa csomópontjának létrehozása:

sz1 = new DefaultMutableTreeNode("B");

sz2 = new DefaultMutableTreeNode("E");

Csomópontok egymáshoz rendelése:

sz1.add(sz2);

tree = new JTree(dmtn);

2005.11.28. Alkalmazásfejlesztési technológia

Késztette: Csöndes Emese 114

DefaultMutableTreeNode dmtn, sz1, sz2;

dmtn = new DefaultMutableTreeNode("A");sz1 = new DefaultMutableTreeNode("B");sz2 = new DefaultMutableTreeNode("E");sz1.add(sz2);sz2 = new DefaultMutableTreeNode("F");sz1.add(sz2);dmtn.add(sz1);sz1 = new DefaultMutableTreeNode("C");sz2 = new DefaultMutableTreeNode("G");sz1.add(sz2);dmtn.add(sz1);sz1 = new DefaultMutableTreeNode("D");sz2 = new DefaultMutableTreeNode("H");sz1.add(sz2);dmtn.add(sz1);tree = new JTree(dmtn);

5/14/2018 AlkFejlKomp - slidepdf.com

http://slidepdf.com/reader/full/alkfejlkomp 20/3320

2005.11.28. Alkalmazásfejlesztési technológia

Késztette: Csöndes Emese 115

Fa adatmodellje TreeModel interfész definiálja

információkat kaphatunk: az adott csomópont gyerekeir ől,

az adott gyerekek szüleir ől,

a gyökérr ől

Legegyszer űbb implementációját aDefaultTreeModel osztály adja

2005.11.28. Alkalmazásfejlesztési technológia

Késztette: Csöndes Emese 116

változtatható

a fa elemeit a MutableTreeNode interfész valósítjameg.

végleges

a fa elemeit a TreeNode interfész valósítja meg.

Fa szerkezete

2005.11.28. Alkalmazásfejlesztési technológia

Késztette: Csöndes Emese 117

Fa adatainak kijelölése,kijelölések nyilvántartása

TreeSelectionModel

2005.11.28. Alkalmazásfejlesztési technológia

Késztette: Csöndes Emese 118

Kijelöléssel kapcsolatos mű veletek:

 Az egész fára: Kijelölés módjának megadása

akárhány fapont kiválasztása,

DISCONTIGUOUS_TREE_SELECTION

egybefüggő fapont-csoport kiválasztása,

CONTIGUOUS_TREE_SELECTION

egyetlen fapont kiválasztásaSINGLE_TREE_SELECTION.

Egész fa kijelölése.

Kijelölés megszüntetése.

2005.11.28. Alkalmazásfejlesztési technológia

Késztette: Csöndes Emese 119

Fapontokra: Kijelölt fapontok

Kijelölt fapontok száma

Kijelölt fapontok indexe

 Adott fapont ki van-e választva

Legkisebb/legnagyobb kijelölt index

Hozzáadhatunk új fapontot a kijelöléshez

Megszüntethetjük a kijelölést fapontokon

Módosíthatjuk a kijelölés összetételét

2005.11.28. Alkalmazásfejlesztési technológia

Késztette: Csöndes Emese 120

Megjelenítés TreeCellRenderer 

Legegyszer űbb implementációját aDefaultTreeCellRenderer osztály adja.

5/14/2018 AlkFejlKomp - slidepdf.com

http://slidepdf.com/reader/full/alkfejlkomp 21/3321

2005.11.28. Alkalmazásfejlesztési technológia

Késztette: Csöndes Emese 121

Szerkesztés

TreeCellEditor  Legegyszer űbb implementációját a

DefaultTreeCellEditor osztály adja.

2005.11.28. Alkalmazásfejlesztési technológia

Késztette: Csöndes Emese 122

Fa alapbeállításaidtcr = new DefaultTreeCellRenderer();

dtce = new DefaultTreeCellEditor(this,dtcr);root = new DefaultMutableTreeNode("gyökér");treeModel = new DefaultTreeModel(root);setModel(treeModel);setEditable(true);getSelectionModel().setSelectionMode

(TreeSelectionModel.SINGLE_TREE_SELECTION);setAutoscrolls(true);setCellEditor(dtce);setCellRenderer(dtcr);

2005.11.28. Alkalmazásfejlesztési technológia

Késztette: Csöndes Emese 123

dtcr.setBackgroundSelectionColor(color1);

dtcr.setTextSelectionColor(color2);

dtcr.setBackgroundNonSelectionColor(color3);

dtcr.setTextNonSelectionColor(color4);

dtcr.setOpenIcon(icon1);

dtcr.setClosedIcon(icon2);

dtcr.setLeafIcon(icon3);

2005.11.28. Alkalmazásfejlesztési technológia

Késztette: Csöndes Emese 124

2005.11.28. Alkalmazásfejlesztési technológia

Késztette: Csöndes Emese 125

8. Táblázat Összetartozó adatok megjelenítése. Sorokból (rekordokból) és oszlopokból áll. Egy oszlopban azonos típusú adatok

szerepelnek. Egy sor összetartozó adatokat tartalmaz.

2005.11.28. Alkalmazásfejlesztési technológia

Késztette: Csöndes Emese 126

Minden egyes oszlopnak van: típusa, ami akár primitív akár referencia

típusú lehet;

fejléce, mely szöveges formában megadja atartalmazott adatok rövid leírását;

megjelenítése, melyet a TableCellRenderer interfész segítségével határozhatunk meg;

szerkeszthetősége, melyet aTableCellEditor  interfész segítségévelhatározhatunk meg.

5/14/2018 AlkFejlKomp - slidepdf.com

http://slidepdf.com/reader/full/alkfejlkomp 22/3322

2005.11.28. Alkalmazásfejlesztési technológia

Késztette: Csöndes Emese 127

 Az oszlop fejléce  A JTableHeader osztály valósítja meg.

 A fejléc által átméretezhető vagy elmozgathatóegy oszlop. Fejlécre kattintással sorba rendezhetők a

táblázat sorai (rekordjai) az adott oszlop szerint.  A táblázatok oszlopait a TabelColumnModel

reprezentálja.  Az oszlopmodellen keresztül lehet a táblázathoz

oszlopot hozzáadni, meglévő oszlopot törölni, oszlopok kiválasztását szabályozni.

2005.11.28. Alkalmazásfejlesztési technológia

Késztette: Csöndes Emese 128

Kijelölés

 A táblázat adatainak kijelöléséért illetve akijelölések nyilvántartásáért aListSelectionModel a felelős.

2005.11.28. Alkalmazásfejlesztési technológia

Késztette: Csöndes Emese 129

Kijelöléssel kapcsolatos mű veletek:

 Az egész táblára: Kijelölés módjának megadása (sorok kijelölése

egyesével, összefüggő vagy függetlenintervallumban történjen).

Egész tábla kijelölése.

Kijelölés megszüntetése.

2005.11.28. Alkalmazásfejlesztési technológia

Késztette: Csöndes Emese 130

Sorokra illetve oszlopokra: Lekérdezhetjük a táblázat egy kijelölt sorát/oszlopát.

Lekérdezhetjük a táblázat kijelölt sorait/oszlopait.

Lekérdezhetjük a kijelölt sorok/oszlopok számát.

Lekérdezhetjük, hogy egy adott sor/oszlop ki van-e jelölve.

Hozzáadhatunk újabb sorokat/oszlopokat akijelöléshez.

Megszüntethetjük a kijelölést sorokon/oszlopokon.

Módosíthatjuk a kijelölés intervallumát.

2005.11.28. Alkalmazásfejlesztési technológia

Késztette: Csöndes Emese 131

Cellára: Lekérdezhetjük, hogy egy adott cella ki van-e

 jelölve.

2005.11.28. Alkalmazásfejlesztési technológia

Késztette: Csöndes Emese 132

 Adat reprezentálás  A táblázat adatainak reprezentálására a

TableModel interfész használható.  A TableModel interfész által információkat

kaphatunk: a táblázat sorainak/oszlopainak számáról, az oszlopok nevér ől, az oszlopok adatainak típusáról, a táblázat celláinak értékeir ől. Figyelhetjük a táblázat sorain/oszlopain végzett

változtatásokat.

5/14/2018 AlkFejlKomp - slidepdf.com

http://slidepdf.com/reader/full/alkfejlkomp 23/3323

2005.11.28. Alkalmazásfejlesztési technológia

Késztette: Csöndes Emese 133

Feladat – TableTest

Hozzunk létre egy adathalmazt. A következő adatokattároljuk benne: sorszám, név, kor, fénykép, kedvenc szín,tagság. Az adatokat táblázatban jelenítsük meg. Az adatokszerkeszthetők:- a név legördülő listán,- a fénykép fájldialóguson,- a szín színdialóguson,- a tagság jelölőmezőn keresztül. Az adatokat véletlenszám generátor segítségével állítjukelő.

2005.11.28. Alkalmazásfejlesztési technológia

Késztette: Csöndes Emese 134

 Az adathordozó osztály 

2005.11.28. Alkalmazásfejlesztési technológia

Késztette: Csöndes Emese 135

 Táblázat készítése: Object tömbbelObject[ ][ ] adatok=new Object[10][6];Object[] oszlopok=new Object[6];String[] nevek=new String{…};String[] oszlopnevek=new String[]{"Sorszám","Név",

"Kor", "Kép", "Szín", "Tag"};for(int i=0; i<10; i++){

Object[] adat=new Adat(i, nevek).getAdatTomb();for(int j=0; j<oszlopnevek.length; j++)

adatok[i][j]=adat[j];}for(int i=0; i<oszlopnevek.length; i++)

oszlopok.add(oszlopnevek[i]);JTable table=new JTable(adatok,oszlopnevek);

2005.11.28. Alkalmazásfejlesztési technológia

Késztette: Csöndes Emese 136

VectorralVector adatok=new Vector();Vector oszlopok=new Vector();

String[] nevek=new String{…};String[] oszlopnevek=new

String[]{"Sorszám","Név", "Kor", "Kép","Szín", "Tag"};

for(int i=1; i<=10; i++)

adatok.add(new Adat(i,nevek).getAdatVektor());for(int i=0; i<oszlopnevek.length; i++)

oszlopok.add(oszlopnevek[i]);

tablazat=new JTable(adatok,oszlopok);

2005.11.28. Alkalmazásfejlesztési technológia

Késztette: Csöndes Emese 137

Új sor felvétele szükségünk van a TableModelre,

Vagy lekérjük a táblázattól, vagy létrehozunk egyet úgy, hogy alkalmazzuk a

legegyszer űbb implementációját aDefaultTableModelt.

table=new JTable(adatok,oszlopnevek);helyettdtm=new DefaultTableModel(adatok,oszlopnevek);table.setModel(dtm);

2005.11.28. Alkalmazásfejlesztési technológia

Késztette: Csöndes Emese 138

az új adat hozzáadása ilyen egyszer űvéválik:

 Adat adat=new Adat(++db, nevek);

dtm.addRow(adat.getAdatVektor());

5/14/2018 AlkFejlKomp - slidepdf.com

http://slidepdf.com/reader/full/alkfejlkomp 24/3324

2005.11.28. Alkalmazásfejlesztési technológia

Késztette: Csöndes Emese 139

Sor törlése

Ki kell tudnunk jelölni.  A tábla kiválasztott sorainak vezérlését a

ListSelectionModel interfész végzi.

 A kijelöléskor ListSelectionEvent eseménykeletkezik.

valueChangedaddListSelection

-Listener 

ListSelection-

Listener 

ListSelection

-Event

 Lekezel ő 

metódus

 Felf  ű  ző metódus Figyel ő 

interfész

 EsemOsztály

2005.11.28. Alkalmazásfejlesztési technológia

Késztette: Csöndes Emese 140

dlsm=new DefaultListSelectionModel();

dlsm.setSelectionMode(

DefaultListSelectionModel.SINGLE_SELECTION);

dlsm.addListSelectionListener(new javax.swing.event.ListSelectionListener() {

public void valueChanged(ListSelectionEvent e) {

}

});

table.setSelectionModel(dlsm);

dtm.removeRow(dlsm.getMinSelectionIndex());

2005.11.28. Alkalmazásfejlesztési technológia

Késztette: Csöndes Emese 141

 Adatmodell

 A táblázat adatmodelljét a TableModelinterfész reprezentálja. Hozzunk létre egy osztályt, melynek őse a

DefaultTableModel osztály lesz.

Ne felejtsük el átállítani a táblázat modelljét az újmodellre.dtm=new TablazatModel(adatok,oszlopnevek);table.setModel(dtm);

2005.11.28. Alkalmazásfejlesztési technológia

Késztette: Csöndes Emese 142

 Adatok szerkesztése Szerkeszteni kétféleképpen lehet az

adatokat: helyben

dialógus ablakban ( javasolt )

 A táblázat cellái alapértelmezésben helybenszerkeszthetőek JTextField komponens

segítségével.  A szerkeszthetőség vezérlését a

TableCellEditor  interfész végzi.

2005.11.28. Alkalmazásfejlesztési technológia

Késztette: Csöndes Emese 143

Egyes típusok adatainak megjelenítéséhez a

következő komponenseket használják általában: Boolean — Jelölőmező (JCheckBox).

Number — Jobbra igazított címke (JLabel).

Double, Float — Formázott beviteli mező (JFormattedTextField) tizedesjegyek számánakmegadásával.

Date — Címkében megjelenített dátum formátumvagy formázott beviteli mező (DateFormat).

ImageIcon, Icon —Középre igazított címke.

Object — Címkében jelenítjük meg az objektumszöveges reprezentációját.

2005.11.28. Alkalmazásfejlesztési technológia

Késztette: Csöndes Emese 144

 Adatmodellt reprezentáló osztályunkban írjuk

felül apublic Class getColumnClass(int columnIndex) {

return Object.class;

}

metódust úgy, hogy valós osztályt adjonvissza (ne Object-et minden esetbe).

Létrehozunk egy JComboBoxot, feltöltjükértékekkel, majd megadjuk a táblázatnak,hogy az adott oszlop ezt a szerkesztésimódot alkalmazza.

5/14/2018 AlkFejlKomp - slidepdf.com

http://slidepdf.com/reader/full/alkfejlkomp 25/3325

2005.11.28. Alkalmazásfejlesztési technológia

Késztette: Csöndes Emese 145

JComboBox cb=new JComboBox(nevek);

TableColumn nevoszlop=

table.getColumnModel().getColumn(1);

nevoszlop.setCellEditor(new DefaultCellEditor(cb));

2005.11.28. Alkalmazásfejlesztési technológia

Késztette: Csöndes Emese 146

2005.11.28. Alkalmazásfejlesztési technológia

Késztette: Csöndes Emese 147

9. Dokumentumkezelés

 A szöveg komponenseket három csoportraoszthatjuk: egysoros beviteli mezők

JTextField JPasswordField JFormattedTextField

többsoros beviteli mező 

JTextArea stílusos szövegek megjelenítését végző 

komponensek JEditorPane JTextPane

2005.11.28. Alkalmazásfejlesztési technológia

Késztette: Csöndes Emese 148

2005.11.28. Alkalmazásfejlesztési technológia

Késztette: Csöndes Emese 149

 A Javaban háromféle dokumentumtípuskezelésére van lehetőség:

sima szöveg (text/plain)kezelését a DefaultEditorKit osztály segíti

rtf szöveg (text/rtf)kezelését az RTFEditorKit osztály segíti

html szöveg (text/html)kezelését a HTMLEditorKit osztály segíti

2005.11.28. Alkalmazásfejlesztési technológia

Késztette: Csöndes Emese 150

5/14/2018 AlkFejlKomp - slidepdf.com

http://slidepdf.com/reader/full/alkfejlkomp 26/3326

2005.11.28. Alkalmazásfejlesztési technológia

Késztette: Csöndes Emese 151

Két új esemény lekezelésére is szükség lehet,ha dokumentumokat szeretnénk kezelni:

 A szöveg kurzor eseményt kezelő CaretEvent osztályra, ha a szöveg kurzor mozgását szeretnénk követni.

 A hivatkozásokat kezelő HyperlinkEventosztályra, mely hivatkozások megszokottmódon való használatát teszi lehetővé a htmlfájlokban.

2005.11.28. Alkalmazásfejlesztési technológia

Késztette: Csöndes Emese 152

hyperlinkUpdateaddHyperlink-

Listener 

Hyperlink-

Listener 

Hyperlink-

Event

caretUpdateaddCaretListener CaretListener CaretEvent

 Lekezel ő metódus

 Felf  ű  ző metódus Figyel ő interfész

 EsemOsztály

2005.11.28. Alkalmazásfejlesztési technológia

Késztette: Csöndes Emese 153

Feladat

2005.11.28. Alkalmazásfejlesztési technológia

Késztette: Csöndes Emese 154

 A feladat megoldásához JEditorPanekomponenst kell alkalmaznunk.

 Az objektum által megjelenített fájlt egyfájldialógus ablak segítségével adjuk meg.

 Az URL osztály egy objektumát hozzuk létrea fájl elérési útjának megadásával.File f;URL url = new URL("file:" + f.getAbsolutePath());

Változtassuk meg az editorPane általmegjelenítendő oldalt.JEditorPane ep = new JEditorPane();ep.setPage(url);

2005.11.28. Alkalmazásfejlesztési technológia

Késztette: Csöndes Emese 155

 A hivatkozás és az egér kapcsolata  Az egér nincs a hivatkozás fölött

 Az egér a hivatkozás fölé ér HyperlinkEvent.EventType.ENTERED

 Az egérrel a hivatkozásra kattintunkHyperlinkEvent.EventType.ACTIVATED

Elhagyjuk az egérrel a hivatkozástHyperlinkEvent.EventType.EXITED

2005.11.28. Alkalmazásfejlesztési technológia

Késztette: Csöndes Emese 156

5/14/2018 AlkFejlKomp - slidepdf.com

http://slidepdf.com/reader/full/alkfejlkomp 27/3327

2005.11.28. Alkalmazásfejlesztési technológia

Késztette: Csöndes Emese 157

 Alkalmazott stílusjegyek: alap - alapértelmezésben használt

stílus, de Dialog betűtípussal

felkover - alap + félkövér  dolt - alap + dőlt alahuzott- alap + aláhúzott kicsi - alap, de 8-as betűmérettel nagy - alap, de 16-os betűmérettel piros - alap, de piros betűszínnel Kek - alap, de kék betűszínnel boci - középre igazított boci.jpg kép

2005.11.28. Alkalmazásfejlesztési technológia

Késztette: Csöndes Emese 158

Megvalósítás: Meg kell adnunk a szöveget, a stílusokat, és

össze kell párosítanunkőket (tömbök).

 A boci stílusnál figyeljünk arra, hogyszerepeljen a stílushoz megjelenítendő szöveg.

Lekérdezzük a dokumentumokmegjelenítéséhez használt stílust, majd ebbőlkiindulva megadjuk az általunk használt alapstílus tulajdonságait.

Erre fogjuk felépíteni a többi stílusunkat.

2005.11.28. Alkalmazásfejlesztési technológia

Késztette: Csöndes Emese 159

JTextPane tp = new JTextPane();

Style def=StyleContext.getDefaultStyleContext().

getStyle(StyleContext.DEFAULT_STYLE);

Style alap=tp.addStyle("alap",def);

StyleConstants.setFontFamily(alap,"Dialog");

Style aktS=tp.addStyle("felkover",alap);

StyleConstants.setBold(aktS,true);

aktS=tp.addStyle("dolt",alap);

StyleConstants.setItalic(aktS,true); aktS=tp.addStyle("alahuzott",alap);

StyleConstants.setUnderline(aktS,true);

2005.11.28. Alkalmazásfejlesztési technológia

Késztette: Csöndes Emese 160

aktStilus=tp.addStyle("kicsi",alap);

StyleConstants.setFontSize(aktS,8);

aktStilus=tp.addStyle("nagy",alap);

StyleConstants.setFontSize(aktS,16);

aktStilus=tp.addStyle("piros",alap);

StyleConstants.setForeground(aktS,Color.red);

aktStilus=tp.addStyle("kek",alap);

StyleConstants.setForeground(aktS,Color.blue);

aktStilus=tp.addStyle("boci",alap);

StyleConstants.setAlignment(aktS,

StyleConstants.ALIGN_CENTER);

StyleConstants.setIcon(aktS,new

ImageIcon("images/boci.jpg"));

2005.11.28. Alkalmazásfejlesztési technológia

Késztette: Csöndes Emese 161

Már csak a stílusokat és a szövegrészeket

össze kell párosítanunk, és a textPanedokumentumához hozzáadnunk.Document doc=tp.getDocument();try{

for(int i=0; i<szoveg.length; i++){doc.insertString(doc.getLength(),szoveg[i],tp.getStyle(stilus[i]));

}}catch(BadLocationException ex){

System.out.println("Nem lehet beilleszteni aszöveget!");

}2005.11.28.

 Alkalmazásfejlesztési technológiaKésztette: Csöndes Emese 162

10. Alkalmazások közötti adatcsere  A Drag and Drop grafikus manipulációk

segítségével végzett adatátvitel azalkalmazások között, vagy az alkalmazásegyik részéből a másikba.

Platformfüggetlenség

Forrás

Cél

5/14/2018 AlkFejlKomp - slidepdf.com

http://slidepdf.com/reader/full/alkfejlkomp 28/3328

2005.11.28. Alkalmazásfejlesztési technológia

Késztette: Csöndes Emese 163

 Adatátvitel támogatása

 ⎯  ⎯  ⎯  ⎯ JTree

JTextPane

JTextField

JTextArea

 ⎯  ⎯  ⎯  ⎯ JTable

 ⎯  ⎯  ⎯  ⎯ JPasswordField

 ⎯  ⎯  ⎯  ⎯ LJist

JFormattedTextField

 ⎯  ⎯  ⎯  ⎯ JFileChooser ***

JEditorPane ⎯  ⎯  ⎯  ⎯ 

JColorChooser **

PasteCopyCutDropDrag

Move*

Drag

Copy*

Komponens

2005.11.28. Alkalmazásfejlesztési technológia

Késztette: Csöndes Emese 164

* Az adott komponensnél asetDragEnabled(true) érték beállítása mellett.

** Az importált, exportált adat típusa java.awt.Color.

*** Fájlnév kerül exportálásra, a java.io.Fileobjektum exportálása nem engedélyezett.

2005.11.28. Alkalmazásfejlesztési technológia

Késztette: Csöndes Emese 165

 Adatátvitel

 Az Adatátvitel (cut and paste) alkalmazásokközötti vagy egy alkalmazás különböző részeiközötti szöveges, grafikus, vagy bármilyenadat átvitele.

Szükség van hozzá egy virtuális vágólapra,

melyen ideiglenesen el lehet helyezni amozgatni kívánt adatot.

2005.11.28. Alkalmazásfejlesztési technológia

Késztette: Csöndes Emese 166

 A drag and drop műveletnél többfélelehetőségünk van az átvinni kívánt adatmeghatározására.

 Alapértelmezés: a kijelölt elem szövegesreprezentációja.

2005.11.28. Alkalmazásfejlesztési technológia

Késztette: Csöndes Emese 167

Egyéb tulajdonság átvitelecomponent.setTransferHandler(

new TransferHandler("text"));

 A bemenetként átadott objektum a következő formátumú:public TransferHandler(String property)

2005.11.28. Alkalmazásfejlesztési technológia

Késztette: Csöndes Emese 168

Komponenstől független szöveg átvitele

 A komponens actionCommandtulajdonságának megadjuk a kívánt szöveget,és ezt a tulajdonságot jelöljük ki az átvitelhez.

5/14/2018 AlkFejlKomp - slidepdf.com

http://slidepdf.com/reader/full/alkfejlkomp 29/3329

2005.11.28. Alkalmazásfejlesztési technológia

Késztette: Csöndes Emese 169

Mozgathatóság feltétele

 Ahhoz, hogy egy objektum mozgathatólegyen: Implementálnia kell a

 java.awt.datatransfer.Transferable interfészt. Meg kell határoznia egy adatformátumot.Minden adatformátum esetében három információt

kell megadni: a formátum logikai nevét, a formátum hivatalos nevét, egy reprezentációs osztályt az adatformátumhoz, mely

magát az adatmozgatást teszi lehetővé.

2005.11.28. Alkalmazásfejlesztési technológia

Késztette: Csöndes Emese 170

Reprezentációs osztály  Meghatározza, hogy milyen típusú objektum kerül

átadásra a küldő és a fogadó között.  A DataFlavor osztály adatformátumot reprezentál.

getTransferData()

 A Java osztály típusú visszatérési értékeit adja.

 A DataFlavor objektum használatával egyszer űenösszehasonlíthatóvá válnak a különböző adatformátumok.  A meglévő két formátum:

DataFlavor.stringFlavor 

DataFlavor.plainTextFlavor 

2005.11.28. Alkalmazásfejlesztési technológia

Késztette: Csöndes Emese 171

 Vágólap

 A Vágólap alkalmazásból kivágott, vagykimásolt adatok tárolására leggyakrabbanhasznált tárolóhely.

 A legtöbb alkalmazásból elérhető. Vágólap segítségével valósítható meg az

adatáramlás Java és nem Java alkalmazásokközött.

 java.awt.datatransfer.Clipboard  java.awt.Toolkit.getSystemClipboard()

2005.11.28. Alkalmazásfejlesztési technológia

Késztette: Csöndes Emese 172

Kivágás, másolás, beillesztés

2005.11.28. Alkalmazásfejlesztési technológia

Késztette: Csöndes Emese 173

void btCut_actionPerformed(ActionEvent e) {

ta.cut();}

void btCopy_actionPerformed(ActionEvent e) {

ta.copy();

}

void btPaste_actionPerformed(ActionEvent e) {

ta.paste();

}

2005.11.28. Alkalmazásfejlesztési technológia

Késztette: Csöndes Emese 174

 Vágólap mű

 veletek  public Transferable getContents(Object requestor)

 Az aktuális vágólap tartalmát adja vissza. Ez vagynull, vagy az adat. A metódus IllegalStateExceptionkivételt dob, ha a vágólap nem elérhető.

public void setContents(Transferable contents,ClipboardOwner owner)

 Az aktuális vágólap tartalmát átírjuk. Hogy eztmegtehessük az osztályunknak implementálnia kella ClipboardOwner interfészt.

5/14/2018 AlkFejlKomp - slidepdf.com

http://slidepdf.com/reader/full/alkfejlkomp 30/3330

2005.11.28. Alkalmazásfejlesztési technológia

Késztette: Csöndes Emese 175

 Transferable interfész

public DataFlavor[ ] getTransferDataFlavors()

public boolean isDataFlavorSupported(DataFlavor flavor)

public Object getTransferData(DataFlavor flavor)

2005.11.28. Alkalmazásfejlesztési technológia

Késztette: Csöndes Emese 176

public DataFlavor[ ] getTransferDataFlavors()

Megadja az alkalmazható DataFlavor-öket

úgy, hogy elsőként említi a legspeciálisabbat,és utolsóként a legáltalánosabbat.pl:DataFlavor[]

tomb=adat.getTransferDataFlavors();for(int i=0; i<tomb.length; i++)System.out.println(tomb[i]).

getHumanPresentableName());

2005.11.28. Alkalmazásfejlesztési technológia

Késztette: Csöndes Emese 177

public boolean isDataFlavorSupported( DataFlavor flavor)

Megadja, hogy a vágólapról lekérdezettadatra alkalmazható-e az adott DataFlavor vagy nem.pl:System.out.println(adat.isDataFlavorSupported(

DataFlavor.stringFlavor));

2005.11.28. Alkalmazásfejlesztési technológia

Késztette: Csöndes Emese 178

public Object getTransferData( DataFlavor flavor)

Visszaadja a vágolapon található adatot a kívántformában. A flavor értékeinek a DataFlavor osztálymezőit adhatjuk meg, melyek közül leginkább aDataFlavor.StringFlavor-t használjuk, mely String-ként adja vissza az adatot.

Két kivétel keletkezhet:

- IOException: Ha az adat már nem kérhető el.- UnsupportedFlavorException: Ha az igényelt flavor 

nem támogatott.

2005.11.28. Alkalmazásfejlesztési technológia

Késztette: Csöndes Emese 179

Clipboard cb = java.awt.Toolkit.getDefaultToolkit().getSystemClipboard();

ta.append("\nNév "+cb.getName()+"\n");Transferable athelyezheto = cb.getContents(this);ta.append("Adattartalmak formái (flavors): ");DataFlavor[] formak = athelyezheto.getTransferDataFlavors();for (int i = 0; i < formak.length; i++) {ta.append("\n "+i+": " + formak[i].getHumanPresentableName());

}ta.append("\n");try {ta.append("Adattartalom szöveges formája: " +

athelyezheto.getTransferData(DataFlavor.stringFlavor) +"\n");

}catch (Exception ex) {ta.append("A vágólap tartalmának nincs szöveges formája.\n");

}ta.setCaretPosition(ta.getText().length());

2005.11.28. Alkalmazásfejlesztési technológia

Késztette: Csöndes Emese 180

11. Java babok  Tulajdonságai

Kódolási konvenciók

Kapcsolt és kényszerített tulajdonságok

Betekintés

5/14/2018 AlkFejlKomp - slidepdf.com

http://slidepdf.com/reader/full/alkfejlkomp 31/3331

2005.11.28. Alkalmazásfejlesztési technológia

Késztette: Csöndes Emese 181

Komponens

Újrafelhasználható szoftver. Egy komponens lehet akár osztály, akár 

objektum.

 A szoftverfejlesztő készíthet sajátkomponenst is, amelyet rátehet a komponenspalettára.

Egy komponensnek vannak tulajdonságai(properties), metódusai (method) éseseményei (events).

2005.11.28. Alkalmazásfejlesztési technológia

Késztette: Csöndes Emese 182

Komponens alapú programozás:

Programkészítés kész komponensekfelhasználásával.

 A szoftverfejlesztő az újrafelhasználhatókomponenseket adaptálja az adottkörnyezetben, és megteremti a szükségeskapcsolatokat a komponensek között.

2005.11.28. Alkalmazásfejlesztési technológia

Késztette: Csöndes Emese 183

 Java bab

 A Java bab (Java bean) olyan újrafelhasználható Java komponens, amelymegadja a lehetőséget arra, hogy egyfejlesztőeszközben vizuálisan manipulálhatólegyen.

2005.11.28. Alkalmazásfejlesztési technológia

Késztette: Csöndes Emese 184

 Tulajdonságai

Felületfüggetlen.

Bármely Java objektum implementálhatóJavaBean-ként.

Vizuálisan manipulálhatók.

 Általános viselkedési forma szerint működik.

Képes információt szolgáltatni önmagáról.

2005.11.28. Alkalmazásfejlesztési technológia

Késztette: Csöndes Emese 185

 A Java bab lehet felhasználó felület elem,

menükomponens,

adathozzáférési komponens

és egyéb.

2005.11.28. Alkalmazásfejlesztési technológia

Késztette: Csöndes Emese 186

 Az ilyen formán előállított komponensek lehetnek 

egyszer ű vagy összetett,

kis vagy nagyméretű komponensek,

lehetnek grafikus vagy láthatatlankomponensek,

lehetnek például információhordozó vagyalgoritmikus komponensek is.

5/14/2018 AlkFejlKomp - slidepdf.com

http://slidepdf.com/reader/full/alkfejlkomp 32/3332

2005.11.28. Alkalmazásfejlesztési technológia

Késztette: Csöndes Emese 187

 A JavaBean komponensmodell kódolásikonvenciói:

Osztály: publikus, és van egy publikus,paraméter nélküli konstruktora.

Tulajdonságok:

logikai érték lekérdezése:public boolean is<PropertyName>();

egyéb érték lekérdezése:public <PropertyType> get<PropertyName>();

2005.11.28. Alkalmazásfejlesztési technológia

Késztette: Csöndes Emese 188

módosítás:public void set<PropertyName> (<PropertyType> pt);

tömb egy elemére:public <PropertyElement> get<PropertyName>(

int index);public void set<PropertyName> (int index,

<PropertyElement> e); egész tömbre:

public <PropertyType>[] get<PropertyName>();public void set<PropertyName> (<PropertyType[] a);

2005.11.28. Alkalmazásfejlesztési technológia

Késztette: Csöndes Emese 189

Eseménykezelés:

public void add<EventListenerType>Listener 

(<EventListenerType>Listener x);

public voidremove<EventListenerType>Listener 

(<EventListenerType>Listener x);

2005.11.28. Alkalmazásfejlesztési technológia

Késztette: Csöndes Emese 190

Kapcsolt és kényszerített tulajdonságok 

Kapcsolt tulajdonságról beszélünk, ha egytulajdonság megváltoztatásáról egy másikkomponensnek is tudnia kell.

Kényszerített tulajdonságról beszélünk, haegy tulajdonság megváltoztatásáról egymásik komponensnek is tudnia kell, és az

értesített komponens döntési joggalrendelkezik. Azaz lehetősége van atulajdonság változtatásának jóváhagyására(validációjára).

2005.11.28. Alkalmazásfejlesztési technológia

Késztette: Csöndes Emese 191

vetoable-

Change

addVetoable-

Change-

Listener

Vetoable-

Change-

Listener

Property-

Change-

Event

property-

Change

addProperty-

Change-

Listener

Property-

Change-

Listener

Property-

Change-

Event

 Lekezel ő 

metódus

 Felf  ű  ző metódus Figyel ő 

interfész

 EsemOsztály

2005.11.28. Alkalmazásfejlesztési technológia

Késztette: Csöndes Emese 192

Betekintés Betekintésnek nevezzük azt a folyamatot,

amikor egy osztály (környezet) megvizsgálegy másik osztályt, hogy: milyen tulajdonságokat, metódusokat és eseményeket támogat.

Ezen információkat kétféleképpen állíthatjukelő, és tehetjük elérhetővé: tükrözés vagy BeanInfo osztály létrehozásával.

5/14/2018 AlkFejlKomp - slidepdf.com

http://slidepdf.com/reader/full/alkfejlkomp 33/3333

2005.11.28. Alkalmazásfejlesztési technológia

Késztette: Csöndes Emese 193

Tükrözés segítségével lehet lekérdezni,hogy milyen mezőket, metódusokat éskonstruktorokat támogat egy bean. Atervezési minták ezen információk alapján, azelnevezési konvenciókból kiindulvamegállapítják, hogy a bean milyentulajdonságokat, eseményeket ésmetódusokat tartalmaz. Ezt a folyamatotnevezzük betekintésnek.

2005.11.28. Alkalmazásfejlesztési technológia

Késztette: Csöndes Emese 194

 A tükrözés megvalósítását a java.lang.reflect csomag Field, Method, Array, Modifier, Constructor osztályai általvalósíthatjuk meg. A Field, a Method és aConstructor osztályok állandóak,példányaikon keresztül lehet információtszerezni a különböző objektumokról.

2005.11.28. Alkalmazásfejlesztési technológia

Késztette: Csöndes Emese 195

 A BeanInfo osztály leírja a beant. Ebben azosztályban bármi megadható a beanr ől,beleértve annak viselkedését, tulajdonságait,metódusait, eseményeit és bármely másinformációt. Itt szokták szerepeltetni például a

beanhez tartozó ikonokat is.