Professional Documents
Culture Documents
Vizsgakvetelmnyek
Felkszlst tmogat anyagok
http://www.gdf.hu/Segedletek/270Fo.htm Alkalmazsfejlesztsi technolgik tantrgynl
Adatbzis-kezels
Tanr: Seres Ivn E-mail: seres@szamalk.hu
Vizsga
Elmleti rsz: Teszt Gyakorlati rsz: Ktelez feladat bemutatsa
2005.11.28.
2005.11.28.
1. Megjelentsi technikk
1.1 1.2 1.3 1.4 1.5 Komponensek kinzetnek meghatrozsa Men megjelentsnek finomtsa Szeglyezs Segdszveg HTML-t rtelmez komponensek
Megjelentsi technikk (szeglyek, segdszveg) Elrendezsi stratgik (krtys, box) Specilis panelek (fles, tbbrteg, grget) Adatbeviteli lehetsgek (specilis szvegmezk) Kijelzk (llapotjelz, nyomkvets) Vezrlsi technikk (felbukkan men, eszkzsor) Fastruktra Tblzat Dokumentumkezels (stlusos szveg kezelse) Alkalmazsok kztti adatcsere (drag and drop technika) Java babok
Alkalmazsfejlesztsi technolgia Ksztette: Csndes Emese
2005.11.28.
2005.11.28.
Feladat - RendererTeszt
Van egy gymlcsneveket tartalmaz tmbnk, melynek tartalmt hromflekppen jelentjk meg. Mindhrom esetben hasznljunk listt. Az els lista az alaprtelmezett megjelentst hasznlja, vagyis az adatok szveges reprezentcija jelenjen meg. (RendererTeszt.java) A msodik lista a gymlcsneveknek megfelel kp fjlokat jelentse meg. (ListaMegjelenito1.java) A harmadik lista az ltalunk Java nyelven megfogalmazott rajzokat jelentse meg. (ListaMegjelenito2.java)
5
2005.11.28. Alkalmazsfejlesztsi technolgia Ksztette: Csndes Emese
2005.11.28.
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(); ...
Alkalmazsfejlesztsi technolgia Ksztette: Csndes Emese Alkalmazsfejlesztsi technolgia Ksztette: Csndes Emese
2005.11.28.
2005.11.28.
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.
2005.11.28.
10
Osztlydiagram
2005.11.28.
11
2005.11.28.
12
ListCellRenderer interfsz Csomag: javax.swing Deklarci: public interface ListCellRenderer Metdusa public Component getListCellRendererComponent(
JList list, Object value, int index, boolean isSelected, boolean cellHasFocus )
2005.11.28. Alkalmazsfejlesztsi technolgia Ksztette: Csndes Emese
public class ListaMegjelenito1 extends JLabel implements 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; } }
13
2005.11.28.
14
15
2005.11.28.
16
JList osztly
Jellemzk int fixedCellWidth int fixedCellHeight
Megadja a listaelem szlessgt/magassgt.
17
2005.11.28.
18
Box
Hromfle megvalstsa van: Box Glue Strut A programba beillesztve nem ltjuk hatst. Lthatatlan mret nlkli komponensknt vesz rszt a megjelentsben. Szerepe: tetszleges, Component-bl szrmaztatott komponens elhelyezhet benne. A BoxLayout-os elrendezs megvalstsnl alkalmazzuk.
19
2005.11.28. Alkalmazsfejlesztsi technolgia Ksztette: Csndes Emese
2005.11.28.
20
Glue
Mindkt, vagy a kitntetett irny maximlisan elfoglalhat terlett veszi fel mretknt.
Strut
Meghatrozhat a lefoglalt terlet mrete. Akr mindkt irnyba, akr csak az egyik, kitntetett irnyba.
2005.11.28. Alkalmazsfejlesztsi technolgia Ksztette: Csndes Emese
21
2005.11.28.
22
1.3 Szeglyezs
Dekorcis cl, a felleti elemek kiemelse, sszetartoz elemek behatrolsa BorderFactory osztly create s az adott szegly nevnek megadsa pldul: BorderFactory.createBevelBorder() EmptyBorder (res szegly): lthatatlan szegly; levegsebb megjelentshez alkalmazzuk, pldul az ablakkerettl val eltvoltshoz.
2005.11.28.
23
2005.11.28.
24
LineBorder (vonalas szegly): adott szn, adott vastagsg sima vonalas szegly.
BevelBorder: a fellethez kpest vagy bemlyeds (Lowered) vagy kitremkeds (Raised) hatst kelt 3D-s szegly. static Border createBevelBorder(
int type, Color highlightOuter, Color highlightInner, Color shadowOuter, Color shadowInner) type: Lowered, Raised
2005.11.28.
25
2005.11.28.
26
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));
CompoundBorder (sszetett szegly): brmely kt szegly kombincija. A megadott szeglyek egyike kls, msik a bels szeglyknt jelenik meg. static CompoundBorder CreateCompoundBorder( Border outsideBorder, Border insideBorder)
2005.11.28.
27
2005.11.28.
28
EtchedBorder: vonalas 3D szegly, melynek tpusa (Raised, Lowered), megadhat. static Border createEtchedBorder(int type, Color highlight, Color shadow)
29
2005.11.28.
30
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)
TitledBorder (cmks szegly): cmkvel kiegsztett tetszleges szegly. A cmke szeglyhez igaztott helyzete mind vzszintes irnyban (LEFT, CENTER, RIGHT, LEADING, TRAILING), mind fggleges irnyban (ABOVE_TOP, BELOW_TOP, TOP, ABOVE_BOTTOM, BELOW_BOTTOM, BOTTOM) meghatrozhat static TitledBorder createTitledBorder( Border border, String title, int titleJustification, int titlePosition, Font titleFont, Color titleColor)
31
2005.11.28. Alkalmazsfejlesztsi technolgia Ksztette: Csndes Emese
createMatteBorder(1,3,5,7,Color.yellow) createMatteBorder(7,5,3,1, )
2005.11.28. Alkalmazsfejlesztsi technolgia Ksztette: Csndes Emese
32
1.4 Segdszveg
Minden komponenshez hozzrendelhet A komponens fltt vrakoz egr hatsra jelenik meg Clja:
komponens hasznlatt segt, magyarz informci megjelentse, egyfajta gyors segtsg nyjts.
2005.11.28.
33
2005.11.28.
34
2005.11.28.
35
2005.11.28.
36
Pldul:
String html="<html><body>Brmi megjelenthet," +"ami HTML tagek segtsgvel lerhat"+ "<hr>"+ "pldul tblzat:<br>"+ "<table border=1>"+ "<tr><td></td><td></td></tr>"+ "</table>"+ "<br>"+ "felsorols:<br>"+ "<li>1</li>"+ "<li>2</li>"+ "</body> </html>"; lb.setText(html);
Alkalmazsfejlesztsi technolgia Ksztette: Csndes Emese Alkalmazsfejlesztsi technolgia Ksztette: Csndes Emese
2005.11.28.
37
2005.11.28.
38
-Segdszveg
- Gomb
2005.11.28.
40
2. Elrendezsi stratgik
Ismerjk mr a: sorfolytonos elrendezst (FlowLayout), a rcsos elrendezst (GridLayout) a hatrmenti elrendezst (BorderLayout).
Alkalmazsfejlesztsi technolgia Ksztette: Csndes Emese
A tovbbiakban jabb elrendezseket ismernk meg, melyek segtsgnkre lesznek a felhasznli fellet kialaktsban.
null layout BoxLayout CardLayout GridBagLayout ScrollPaneLayout
2005.11.28.
41
2005.11.28.
42
2005.11.28.
43
2005.11.28.
44
A komponens vonalhoz kpesti helyzett egy 0 <= x <=1 rtkkel adhatjuk meg (x float tpus). Megvalsts: 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. Alkalmazsfejlesztsi technolgia Ksztette: Csndes Emese
45
2005.11.28.
46
Container panelok=new Container(); CardLayout cl = new CardLayout(); panelok.setLayout(cl); panelok.add(pn1, "fehr"); panelok.add(pn2, "srga"); panelok.add(pn3, "narancs"); panelok.add(pn4, "piros"); panelok.add(pn5, "cin); panelok.add(pn6, "kk"); panelok.add(pn7, "zld"); panelok.add(pn8, "pink"); panelok.add(pn9, "mlyva"); panelok.add(pn10, "fekete");
2005.11.28. Alkalmazsfejlesztsi technolgia Ksztette: Csndes Emese
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); }
Alkalmazsfejlesztsi technolgia Ksztette: Csndes Emese
47
2005.11.28.
48
x 2 2 1 0 0
y 3 1 1 0 1
w 2 2 1 4 1
h 1 2 3 1 3
wx
wy
anchor
fill
insets dx 0 0 0 0 0
dy 0 0 0 0 0
0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0
CENTER HORIZONTAL 0,0,0,0 CENTER BOTH CENTER VERTICAL CENTER VERTICAL 0,0,0,0 0,0,0,0 0,0,0,0
49
2005.11.28.
50
51
2005.11.28.
52
3. Specilis panelek
3.1 3.2 3.3 3.4 3.5 Tbboldalas panel Kettoszthat panel Grgethet panel Tbbrteg panel Bels ablakot tartalmaz panel
Tbboldalas panel, mely egyms el helyezett, flek segtsgvel elrhet panelokbl ll. Kettoszthat panel, mely egy terleten kt panelt jelent meg egyms mellett, vagy egyms alatt. Bellthat, hogy a panelek hogyan osztozzanak a terleten. Grgethet panel, mely adott terlett mutatja csak a teljes panelnek, a tbbi rsz grgets segtsgvel tehet lthatv. Tbbrteg panel, mely a rajta elhelyezett panelokat rtegekknt kezeli, hozzjuk prioritst rendel, ami meghatrozza a panelok sorrendjt, s ez ltal a lthat terleteket is. Bels ablakot tartalmaz panel, mely a tbbablakos megjelentst teszi lehetv.
53
2005.11.28. Alkalmazsfejlesztsi technolgia Ksztette: Csndes Emese
2005.11.28.
54
2005.11.28.
55
2005.11.28.
56
2005.11.28.
57
58
2005.11.28.
59
2005.11.28.
60
10
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. Alkalmazsfejlesztsi technolgia Ksztette: Csndes Emese
61
2005.11.28.
62
Elredefinilt rtegek
0 100 200 300 400
2005.11.28.
63
2005.11.28.
64
Ha a megszokott viselkedsi forma szerint szeretnnk bels ablakainkat kezelni, akkor a vlasztott panel a tbbrteg panel egy specilis leszrmazottja, a JDesktopPane legyen.
2005.11.28.
65
2005.11.28.
66
11
2005.11.28.
67
2005.11.28.
68
Fprogramban: 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. Alkalmazsfejlesztsi technolgia Ksztette: Csndes Emese
Figyel interfsz
InternalFrameListener
Felfz metdus
addInternalFrameListener
69
2005.11.28.
JDesktopPane - DesktopManager
A DesktopManager interfsz segtsgvel a JDesktopPane-en elhelyezett bels ablakok llapott mdosthatjuk. Legegyszerbb implementcijt a DefaultDesktopManager osztly adja.
2005.11.28.
71
2005.11.28.
72
12
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. Alkalmazsfejlesztsi technolgia Ksztette: Csndes Emese
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. Alkalmazsfejlesztsi technolgia Ksztette: Csndes Emese
73
74
4. Adatbeviteli lehetsgek
4.1 4.2 4.3 4.4 rtkkivlaszt grgetsv JSlider JSpinner osztly s a hozz kapcsold modellek Formzott beviteli mez JFormattedTextField Jelsz mez JPasswordField
2005.11.28.
75
2005.11.28.
76
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("Norml")); sebesseg.put(new Integer(1000), new JLabel("Gyors"));
2005.11.28. Alkalmazsfejlesztsi technolgia Ksztette: Csndes Emese
77
2005.11.28.
78
13
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. Alkalmazsfejlesztsi technolgia Ksztette: Csndes Emese
79
2005.11.28.
80
SpinnerDateModel
Calendar 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. Alkalmazsfejlesztsi technolgia Ksztette: Csndes Emese
SpinnerListModel JSpinner spLista = new JSpinner(); SpinnerListModel slm; String[] listaElemek = new String[] { "Htf", "Kedd", "Szerda", "Cstrtk", "Pntek", "Szombat", "Vasrnap"}; slm = new SpinnerListModel(listaElemek);
81
2005.11.28.
82
CyclingSpinnerListModel public class CyclingSpinnerListModel extends SpinnerListModel { public CyclingSpinnerListModel(Object[] values) { super(values); firstValue = values[0]; lastValue = values[values.length - 1]; } public Object getNextValue() { } public Object getPreviousValue() { } }
2005.11.28. Alkalmazsfejlesztsi technolgia Ksztette: Csndes Emese
SpinnerNumberModel
JSpinner spSzam = new JSpinner(); SpinnerNumberModel snm; snm = new SpinnerNumberModel(50, 0, 100, 3);
83
2005.11.28.
84
14
Az adatot megjelenthetjk:
Egyni formtumban, melyet a mask karakterek segtsgvel tetszs szerint hatrozhatunk meg. A mask sszelltsban hasznlhat karaktereket a MaskFormatter osztly adja meg.
85
2005.11.28. Alkalmazsfejlesztsi technolgia Ksztette: Csndes Emese
2005.11.28.
86
NumberFormat szamForma, NumberFormat penzForma; MaskFormatter mobilForma; szamForma=NumberFormat.getNumberInstance(); szamForma.setMinimumFractionDigits(3); penzForma=NumberFormat.getIntegerInstance(); penzForma.setMinimumFractionDigits(0); try { mobilForma = new MaskFormatter("(##)/###-##-##"); } catch (ParseException ex) {..}
2005.11.28. Alkalmazsfejlesztsi technolgia Ksztette: Csndes Emese
ftfSzam = new JFormattedTextField(szamForma); ftfPenz = new JFormattedTextField(penzForma); ftfTel = new JFormattedTextField(mobilForma); ftfSzam.addPropertyChangeListener("value", this); ftfPenz.addPropertyChangeListener("value", this); ftfTel.addPropertyChangeListener("value", this);
87
2005.11.28.
88
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. Alkalmazsfejlesztsi technolgia Ksztette: Csndes Emese
Mask karakterek:
Karakter Lers
# Szmjegy (Character.isDigit). Brmely bet nagybets formban (Character.isUpperCase). Brmely bet kisbets formban (Character.isLowerCase). Brmely bet vagy szm (Character.isLetter vagy Character.isDigit). Brmely bet (Character.isLetter). Joker karakter. Akrmilyen karaktert takarhat. Brmely hexadecimlis karakter (0-9, a-f vagy A-F).
Alkalmazsfejlesztsi technolgia Ksztette: Csndes Emese
89
90
15
Pldul:
irnytszm megadsa: #### vezetknv megadsa: U* ltalnos rendszm megadsa: ???-### gyeljnk a specilis esetekre! Pldul lteznek egyedi rendszmok.
2005.11.28.
91
2005.11.28.
92
5. Kijelzk
JProgressBar
Az osztlybl ltrehozott objektum a fellet komponenseknt jelenthet meg.
JProgressMonitor
Az osztlybl ltrehozott objektum kln dialgusablakban jelenik meg.
2005.11.28.
93
2005.11.28.
94
6. Vezrlsi technikk
6.1 6.2 6.3 Felbukkan men Eszkzsor Elre definilt esemnyfigyelk
2005.11.28.
95
2005.11.28.
96
16
Elhelyezkedsk fgghet:
az adott komponenstl, az egr aktulis pozcijtl, de egy tetszleges koordintban is megjelenthetjk ket.
A felbukkan men egr esemnynek hatsra jelenik meg abban az esetben, ha van megjelenthet pldnya.
if (e.isPopupTrigger()) { popup.show(e.getComponent(),e.getX(), e.getY()); }
Nem lthatk llandan, felbukkansuk valamely esemnyhez kapcsoldik. Szerkezett tekintve ugyanolyan, mint az ltalnos men.
2005.11.28. Alkalmazsfejlesztsi technolgia Ksztette: Csndes Emese
A sajt esemnyeit ltalban nem szoktk alkalmazni, hiszen azok csak a megjelens, eltns, megszns llapotot kezelik le.
97
2005.11.28. Alkalmazsfejlesztsi technolgia Ksztette: Csndes Emese
98
EsemOsztly PopupMenuEvent
6.2 Eszkzsor
Az eszkzsor ToolBarLayout elrendezst hasznl, mely a FlowLayout elrendezsmenedzser leszrmazottja. http://java.sun.com/developer/techDocs /hi/repository/
2005.11.28.
99
2005.11.28.
100
101
2005.11.28.
102
17
StyledEditorKit.StyledTextAction
StyledEditorKit.AlignmentAction StyledEditorKit.BoldAction StyledEditorKit.FontFamilyAction StyledEditorKit.FontSizeAction StyledEditorKit.ForegroundAction StyledEditorKit.ItalicAction StyledEditorKit.UnderlineAction
Alkalmazsfejlesztsi technolgia Ksztette: Csndes Emese
103
2005.11.28.
104
A stlusjegyeknl kln vltozba lementjk az akcit, tnevezzk, s csak ezutn helyezzk el a menn. action = new StyledEditorKit.BoldAction(); action.putValue(Action.NAME, "Flkvr"); mBetustilus.add( miFelkover=new JMenuItem(action));
2005.11.28.
105
2005.11.28.
106
A bettpusokat lekrjk a rendszertl, s az gy kapott eredmny alapjn tltjk fel a ment. 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. Alkalmazsfejlesztsi technolgia Ksztette: Csndes Emese
7. Fastruktra
ngy elnevezst hasznlunk a fa elemeire:
gykr (root), szl (parent), gyerek (child), levl (leaf).
107
2005.11.28.
108
18
Fastruktra ltrehozsa:
Objektum tmb segtsgvel Vektor segtsgvel Hasttbla segtsgvel Fa csompontok megadsval
2005.11.28.
109
2005.11.28.
110
Vektor segtsgvel:
for(char c='A'; c<='H'; c++) v.add(""+c); tree=new JTree(v);
Hasttbla segtsgvel:
for (char c = 'A'; c <= 'H'; c++) { h.put("" + c, "" + c); } tree = new JTree(h);
2005.11.28.
111
2005.11.28.
112
Fa csompontok megadsval:
Vltoztathat fa csompontjnak ltrehozsa: sz1 = new DefaultMutableTreeNode("B"); sz2 = new DefaultMutableTreeNode("E"); Csompontok egymshoz rendelse: sz1.add(sz2); tree = new JTree(dmtn);
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);
2005.11.28.
113
2005.11.28.
114
19
Fa adatmodellje
TreeModel interfsz definilja
informcikat kaphatunk: az adott csompont gyerekeirl, az adott gyerekek szleirl, a gykrrl
Fa szerkezete
vltoztathat a fa elemeit a MutableTreeNode interfsz valstja meg. vgleges a fa elemeit a TreeNode interfsz valstja meg.
2005.11.28.
115
2005.11.28.
116
117
2005.11.28.
118
Megjelents
Fapontokra:
Kijellt fapontok Kijellt fapontok szma Kijellt fapontok indexe Adott fapont ki van-e vlasztva Legkisebb/legnagyobb kijellt index Hozzadhatunk j fapontot a kijellshez Megszntethetjk a kijellst fapontokon Mdosthatjuk a kijells sszettelt
2005.11.28. Alkalmazsfejlesztsi technolgia Ksztette: Csndes Emese
119
2005.11.28.
120
20
Szerkeszts
TreeCellEditor Legegyszerbb implementcijt a DefaultTreeCellEditor osztly adja.
Fa alapbelltsai
dtcr = new DefaultTreeCellRenderer(); dtce = new DefaultTreeCellEditor(this,dtcr); root = new DefaultMutableTreeNode("gykr"); treeModel = new DefaultTreeModel(root); setModel(treeModel); setEditable(true); getSelectionModel().setSelectionMode (TreeSelectionModel.SINGLE_TREE_SELECTION); setAutoscrolls(true); setCellEditor(dtce); setCellRenderer(dtcr);
121
2005.11.28. Alkalmazsfejlesztsi technolgia Ksztette: Csndes Emese
2005.11.28.
122
123
2005.11.28.
124
8. Tblzat
sszetartoz adatok megjelentse. Sorokbl (rekordokbl) s oszlopokbl ll. Egy oszlopban azonos tpus adatok szerepelnek. Egy sor sszetartoz adatokat tartalmaz.
2005.11.28.
126
21
Az oszlop fejlce
A JTableHeader osztly valstja meg. A fejlc ltal tmretezhet vagy elmozgathat egy oszlop. Fejlcre kattintssal sorba rendezhetk a tblzat sorai (rekordjai) az adott oszlop szerint. A tblzatok oszlopait a TabelColumnModel reprezentlja. Az oszlopmodellen keresztl lehet a tblzathoz
oszlopot hozzadni, meglv oszlopot trlni, oszlopok kivlasztst szablyozni.
2005.11.28. Alkalmazsfejlesztsi technolgia Ksztette: Csndes Emese
Kijells
A tblzat adatainak kijellsrt illetve a kijellsek nyilvntartsrt a ListSelectionModel a felels.
127
2005.11.28.
128
2005.11.28.
130
Adat reprezentls
Cellra:
Lekrdezhetjk, hogy egy adott cella ki van-e jellve.
A tblzat adatainak reprezentlsra a TableModel interfsz hasznlhat. A TableModel interfsz ltal informcikat kaphatunk:
a tblzat sorainak/oszlopainak szmrl, az oszlopok nevrl, az oszlopok adatainak tpusrl, a tblzat cellinak rtkeirl. Figyelhetjk a tblzat sorain/oszlopain vgzett vltoztatsokat.
2005.11.28.
131
2005.11.28.
132
22
Az adathordoz osztly
Feladat TableTest
Hozzunk ltre egy adathalmazt. A kvetkez adatokat troljuk benne: sorszm, nv, kor, fnykp, kedvenc szn, tagsg. Az adatokat tblzatban jelentsk meg. Az adatok szerkeszthetk: - a nv legrdl listn, - a fnykp fjldialguson, - a szn szndialguson, - a tagsg jellmezn keresztl. Az adatokat vletlenszm genertor segtsgvel lltjuk el.
2005.11.28.
133
2005.11.28.
134
Vectorral
Vector adatok=new Vector(); Vector oszlopok=new Vector();
String[] nevek=new String{}; String[] oszlopnevek=new String[]{"Sorszm","Nv", "Kor", "Kp", "Szn", "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]);
String[] nevek=new String{}; String[] oszlopnevek=new String[]{"Sorszm","Nv", "Kor", "Kp", "Szn", "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);
135
2005.11.28. Alkalmazsfejlesztsi technolgia Ksztette: Csndes Emese
136
j sor felvtele
szksgnk van a TableModelre,
Vagy lekrjk a tblzattl, vagy ltrehozunk egyet gy, hogy alkalmazzuk a legegyszerbb implementcijt a DefaultTableModelt.
az j adat hozzadsa ilyen egyszerv vlik: Adat adat=new Adat(++db, nevek); dtm.addRow(adat.getAdatVektor());
137
2005.11.28.
138
23
Sor trlse
Ki kell tudnunk jellni. A tbla kivlasztott sorainak vezrlst a ListSelectionModel interfsz vgzi. A kijellskor ListSelectionEvent esemny keletkezik.
Figyel interfsz ListSelection ListSelection-Event Listener
2005.11.28.
EsemOsztly
Felfz metdus
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. Alkalmazsfejlesztsi technolgia Ksztette: Csndes Emese
140
Adatmodell
A tblzat adatmodelljt a TableModel interfsz reprezentlja.
Hozzunk ltre egy osztlyt, melynek se a DefaultTableModel osztly lesz. Ne felejtsk el tlltani a tblzat modelljt az j modellre.
dtm=new TablazatModel(adatok,oszlopnevek);
table.setModel(dtm);
Adatok szerkesztse
Szerkeszteni ktflekppen lehet az adatokat:
helyben dialgus ablakban (javasolt)
A tblzat celli alaprtelmezsben helyben szerkeszthetek JTextField komponens segtsgvel. A szerkeszthetsg vezrlst a TableCellEditor interfsz vgzi.
2005.11.28. Alkalmazsfejlesztsi technolgia Ksztette: Csndes Emese
2005.11.28.
141
142
Egyes tpusok adatainak megjelentshez a kvetkez komponenseket hasznljk ltalban: Boolean Jellmez (JCheckBox). Number Jobbra igaztott cmke (JLabel). Double, Float Formzott beviteli mez (JFormattedTextField) tizedesjegyek szmnak megadsval. Date Cmkben megjelentett dtum formtum vagy formzott beviteli mez (DateFormat). ImageIcon, Icon Kzpre igaztott cmke. Object Cmkben jelentjk meg az objektum szveges reprezentcijt.
Alkalmazsfejlesztsi technolgia Ksztette: Csndes Emese
metdust gy, hogy vals osztlyt adjon vissza (ne Object-et minden esetbe). Ltrehozunk egy JComboBoxot, feltltjk rtkekkel, majd megadjuk a tblzatnak, hogy az adott oszlop ezt a szerkesztsi mdot alkalmazza.
143
2005.11.28. Alkalmazsfejlesztsi technolgia Ksztette: Csndes Emese
2005.11.28.
144
24
2005.11.28.
145
2005.11.28.
146
9. Dokumentumkezels
A szveg komponenseket hrom csoportra oszthatjuk:
egysoros beviteli mezk
JTextField JPasswordField JFormattedTextField
147
2005.11.28.
148
2005.11.28.
149
2005.11.28.
150
25
2005.11.28.
151
2005.11.28.
152
Feladat
A feladat megoldshoz JEditorPane komponenst kell alkalmaznunk. Az objektum ltal megjelentett fjlt egy fjldialgus ablak segtsgvel adjuk meg. Az URL osztly egy objektumt hozzuk ltre a fjl elrsi tjnak megadsval.
File f; URL url = new URL("file:" + f.getAbsolutePath());
153
2005.11.28.
154
2005.11.28.
155
2005.11.28.
156
26
Alkalmazott stlusjegyek:
alap stlus, felkover dolt alahuzottkicsi nagy piros Kek boci 2005.11.28.
Megvalsts:
Meg kell adnunk a szveget, a stlusokat, s ssze kell prostanunk ket (tmbk). A boci stlusnl figyeljnk arra, hogy szerepeljen a stlushoz megjelentend szveg. Lekrdezzk a dokumentumok megjelentshez hasznlt stlust, majd ebbl kiindulva megadjuk az ltalunk hasznlt alap stlus tulajdonsgait. Erre fogjuk felpteni a tbbi stlusunkat.
2005.11.28. Alkalmazsfejlesztsi technolgia Ksztette: Csndes Emese
alaprtelmezsben hasznlt de Dialog bettpussal alap + flkvr alap + dlt alap + alhzott alap, de 8-as betmrettel alap, de 16-os betmrettel alap, de piros betsznnel alap, de kk betsznnel kzpre igaztott boci.jpg kp
Alkalmazsfejlesztsi technolgia Ksztette: Csndes Emese
157
158
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);
Alkalmazsfejlesztsi technolgia Ksztette: Csndes Emese
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. Alkalmazsfejlesztsi technolgia Ksztette: Csndes Emese
2005.11.28.
159
160
161
2005.11.28.
162
27
Adattvitel tmogatsa
Komponens JColorChooser** JEditorPane JFileChooser*** JFormattedTextField LJist JPasswordField JTable JTextArea JTextField JTextPane JTree
2005.11.28.
Drag Copy*
Drag Move*
Drop
Cut
Copy
Paste
* Az adott komponensnl a setDragEnabled(true) rtk belltsa mellett. ** Az importlt, exportlt adat tpusa java.awt.Color. *** Fjlnv kerl exportlsra, a java.io.File objektum exportlsa nem engedlyezett.
163
2005.11.28.
164
Adattvitel
Az Adattvitel (cut and paste) alkalmazsok kztti vagy egy alkalmazs klnbz rszei kztti szveges, grafikus, vagy brmilyen adat tvitele. Szksg van hozz egy virtulis vglapra, melyen ideiglenesen el lehet helyezni a mozgatni kvnt adatot. A drag and drop mveletnl tbbfle lehetsgnk van az tvinni kvnt adat meghatrozsra. Alaprtelmezs: a kijellt elem szveges reprezentcija.
2005.11.28.
165
2005.11.28.
166
2005.11.28.
167
2005.11.28.
168
28
Mozgathatsg felttele
Ahhoz, hogy egy objektum mozgathat legyen:
Implementlnia kell a java.awt.datatransfer.Transferable interfszt. Meg kell hatroznia egy adatformtumot. Minden adatformtum esetben hrom informcit kell megadni:
a formtum logikai nevt, a formtum hivatalos nevt, egy reprezentcis osztlyt az adatformtumhoz, mely magt az adatmozgatst teszi lehetv.
2005.11.28. Alkalmazsfejlesztsi technolgia Ksztette: Csndes Emese
Reprezentcis osztly
Meghatrozza, hogy milyen tpus objektum kerl tadsra a kld s a fogad kztt. A DataFlavor osztly adatformtumot reprezentl.
getTransferData() A Java osztly tpus visszatrsi rtkeit adja.
169
2005.11.28.
170
Vglap
A Vglap alkalmazsbl kivgott, vagy kimsolt adatok trolsra leggyakrabban hasznlt trolhely. A legtbb alkalmazsbl elrhet. Vglap segtsgvel valsthat meg az adatramls Java s nem Java alkalmazsok kztt. java.awt.datatransfer.Clipboard java.awt.Toolkit.getSystemClipboard()
2005.11.28. Alkalmazsfejlesztsi technolgia Ksztette: Csndes Emese
171
2005.11.28.
172
Vglap mveletek
public Transferable getContents(Object requestor) Az aktulis vglap tartalmt adja vissza. Ez vagy null, vagy az adat. A metdus IllegalStateException kivtelt dob, ha a vglap nem elrhet. public void setContents(Transferable contents, ClipboardOwner owner) Az aktulis vglap tartalmt trjuk. Hogy ezt megtehessk az osztlyunknak implementlnia kell a ClipboardOwner interfszt.
2005.11.28.
173
2005.11.28.
174
29
Transferable interfsz
public DataFlavor[ ] getTransferDataFlavors() public boolean isDataFlavorSupported( DataFlavor flavor) public Object getTransferData( DataFlavor flavor)
2005.11.28.
175
2005.11.28.
176
2005.11.28.
177
2005.11.28.
178
Clipboard cb = java.awt.Toolkit.getDefaultToolkit().getSystemClipboard(); ta.append("\nNv "+cb.getName()+"\n"); Transferable athelyezheto = cb.getContents(this); ta.append("Adattartalmak formi (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 szveges formja: " + athelyezheto.getTransferData(DataFlavor.stringFlavor) + "\n"); } catch (Exception ex) { ta.append("A vglap tartalmnak nincs szveges formja.\n"); } ta.setCaretPosition(ta.getText().length());
2005.11.28. Alkalmazsfejlesztsi technolgia Ksztette: Csndes Emese
179
2005.11.28.
180
30
Komponens
jrafelhasznlhat szoftver. Egy komponens lehet akr osztly, akr objektum. A szoftverfejleszt kszthet sajt komponenst is, amelyet rtehet a komponens palettra. Egy komponensnek vannak tulajdonsgai (properties), metdusai (method) s esemnyei (events).
2005.11.28. Alkalmazsfejlesztsi technolgia Ksztette: Csndes Emese
181
2005.11.28.
182
Java bab
A Java bab (Java bean) olyan jra felhasznlhat Java komponens, amely megadja a lehetsget arra, hogy egy fejleszteszkzben vizulisan manipullhat legyen.
Tulajdonsgai
Felletfggetlen. Brmely Java objektum implementlhat JavaBean-knt. Vizulisan manipullhatk. ltalnos viselkedsi forma szerint mkdik. Kpes informcit szolgltatni nmagrl.
2005.11.28.
183
2005.11.28.
184
2005.11.28.
185
2005.11.28.
186
31
2005.11.28.
188
2005.11.28.
190
Betekints
Figyel interfsz Property- PropertyChangeChangeEvent Listener Property- VetoableChangeChangeEvent Listener EsemOsztly Lekezel metdus addProperty- propertyChangeChange Listener addVetoable- vetoableChangeChange Listener Felfz metdus
Betekintsnek nevezzk azt a folyamatot, amikor egy osztly (krnyezet) megvizsgl egy msik osztlyt, hogy:
milyen tulajdonsgokat, metdusokat s esemnyeket tmogat.
2005.11.28.
191
2005.11.28.
192
32
Tkrzs segtsgvel lehet lekrdezni, hogy milyen mezket, metdusokat s konstruktorokat tmogat egy bean. A tervezsi mintk ezen informcik alapjn, az elnevezsi konvencikbl kiindulva megllaptjk, hogy a bean milyen tulajdonsgokat, esemnyeket s metdusokat tartalmaz. Ezt a folyamatot nevezzk betekintsnek.
2005.11.28. Alkalmazsfejlesztsi technolgia Ksztette: Csndes Emese
A tkrzs megvalstst a java.lang.reflect csomag Field, Method, Array, Modifier, Constructor osztlyai ltal valsthatjuk meg. A Field, a Method s a Constructor osztlyok llandak, pldnyaikon keresztl lehet informcit szerezni a klnbz objektumokrl.
193
2005.11.28.
194
A BeanInfo osztly lerja a beant. Ebben az osztlyban brmi megadhat a beanrl, belertve annak viselkedst, tulajdonsgait, metdusait, esemnyeit s brmely ms informcit. Itt szoktk szerepeltetni pldul a beanhez tartoz ikonokat is.
2005.11.28.
195
33