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.