swing
DESCRIPTION
SwingTRANSCRIPT
-
Lp trnh chuyn nng cao
Chng II
Lp trnh GUI vi SwingBin son: ThS Nguyn Vn Lnh
30/03/14 Bi ging dnh cho sinh vin ngnh Cng ngh Thng Tin 2
Mc tiu
Hon thnh chng ny, sinh vin phi t c nhng im sau: Hiu cu trc v nm vng k nng lp trnh t chc
1 giao din ngi dng ha trong Java
Bit cch lp trnh ty bin cc i tng GUI trong th vin Swing
Hiu c ch x l s kin tng tc ngi dng vnm vng k nng lp trnh pht trin cc i tng x l s kin.
K nng t tm hiu v s dng cc GUI component c sn trong th vin
30/03/14 Bi ging dnh cho sinh vin ngnh Cng ngh Thng Tin 3
Ni dung
Gii thiu chung v AWT & Swing
Cu trc chung ca cc giao din GUI
Cc lp vt cha & trnh qun l layout
Cc thnh phn GUI c bn
C ch x l s kin tng tc ngi dng
Cc lp listener c bn & cch ty bin
30/03/14 Bi ging dnh cho sinh vin ngnh Cng ngh Thng Tin 4
I. Gii thiu chung v AWT & Swing
AWT: Abstract Windows
Toolkit
Th vin API cung cp cc i tng GUI
To lin kt giao din gia ng dng Java vOS
Heavy-weight component
Package java.awt
-
30/03/14 Bi ging dnh cho sinh vin ngnh Cng ngh Thng Tin 5
I. Gii thiu chung v AWT & Swing
Swing: s m rng AWT To giao din nht qun c lp vi mi trng
(cross-platform GUI)
Light-weight component vi nhiu c im nng cp.
pluggable look and feel
C kh nng ty bin ti thi im runtime Khng s dng trn ln AWT v Swing GUI
component trn cng 1 giao din. Package javax.swing
30/03/14 Bi ging dnh cho sinh vin ngnh Cng ngh Thng Tin 6
I. Gii thiu chung v AWT & Swing
Thit k theo tng m hnh MVC (Model-View- Controller) v m hnh thnh
phn (component model)
Tng tc gia ngi dng v giao din GUI iu khin bi controller
Standard Widget Toolkit (SWT) l sn phm cng ngh tng ng ca IBM tch hp trong Eclipse IDE
30/03/14 Bi ging dnh cho sinh vin ngnh Cng ngh Thng Tin 7
I. Gii thiu chung v AWT & Swing
Cu trc giao din GUI : t chc cc i tng GUI trn 1 vt cha(container) qun l bi trnh qun l b tr (layout manager)
30/03/14 Bi ging dnh cho sinh vin ngnh Cng ngh Thng Tin 8
I. Gii thiu chung v AWT & Swing
Cc thnh phn Swing k tha t lp c sJComponent
-
30/03/14 Bi ging dnh cho sinh vin ngnh Cng ngh Thng Tin 9
II. Cc lp vt cha
Giao din GUI c trnh by trn 1 vt cha c t chc phn cp Top level container: JFrame, JDialog, Japplet
Intermediate container :JPanel, JScrollPane, JTabbedPane
Container cp cao qun l gin tip cc container trung gian cho php t chc giao din theo chiu su Z-oderring
30/03/14 Bi ging dnh cho sinh vin ngnh Cng ngh Thng Tin 10
II. Cc lp vt cha
JFrame l 1 ca s c khung, c tiu v cc nt iu khin dng hin th giao din ng dng Java c lp
JDialog: Hp thoi c vin khung v tiu , phi c 1
frame hoc dialog lm owner, t ng thu nh hoc hin th theo owner
Modal hoc modeless
JApplet : to giao din GUI cho ng dng nhng
30/03/14 Bi ging dnh cho sinh vin ngnh Cng ngh Thng Tin 11
II. Cc lp vt cha
Cc lp container cp cao: Qun l cc i tng qua trung gian rootPane v
contentPane
S dng Content Pane l vt cha trc tip cc i tng GUI khc.
Cc container trung gian
S dng trnh qun l layout manager b tr vqun l cc i tng trn GUI khi c s thay i hoc di chuyn container
30/03/14 Bi ging dnh cho sinh vin ngnh Cng ngh Thng Tin 12
II. Trnh qun l layout
Mi vt cha s dng layout manager qun l v tr v kch thc cc thnh phn GUI b tr trn vt cha
5 lp layout manager thng dng: BorderLayout, BoxLayout, FlowLayout, GridBagLayout, and GridLayout.
Khi b tr 1 i tng GUI trn container phi ch loi layout ang s dng
-
30/03/14 Bi ging dnh cho sinh vin ngnh Cng ngh Thng Tin 13
II. Trnh qun l layout
Content-pane ca cc vt cha c mc nh s dng 1 loi layout JFrame, JDialog, JApplet: BorderLayout
JPanel: FlowLayout
Thit lp layout trn 1 container setLayout(LayoutManager l)
setLayout(null): t qun l layout: nh v tuyt i Implements LayoutManager qun l layout cho
cc giao din GUI ty .Container contentPane = getContentPane();
contentPane.setLayout(new FlowLayout());
30/03/14 Bi ging dnh cho sinh vin ngnh Cng ngh Thng Tin 14
BorderLayout
Container contentPane = getContentPane();
contentPane.add(new JButton("Button 1 (NORTH)"), BorderLayout.NORTH);
contentPane.add(new JButton("2 (CENTER)"), BorderLayout.CENTER);
contentPane.add(new JButton("Button 3 (WEST)"), BorderLayout.WEST);
contentPane.add(new JButton("Long-Named Button 4 (SOUTH)"),
BorderLayout.SOUTH);
contentPane.add(new JButton("Button 5 (EAST)"), BorderLayout.EAST);
30/03/14 Bi ging dnh cho sinh vin ngnh Cng ngh Thng Tin 15
BoxLayout
B tr top to bottom|left to right
Tn trng kch thc ti a vX/Y alignment.
JPanel buttonPane = new JPanel();
buttonPane.setLayout(new
BoxLayout(buttonPane, BoxLayout.X_AXIS));
buttonPane.setBorder(BorderFactory.createEmptyBorder(0, 10, 10, 10));
buttonPane.add(Box.createHorizontalGlue());
buttonPane.add(cancelButton);
buttonPane.add(Box.createRigidArea(new Dimension(10, 0)));
buttonPane.add(setButton);
S dng Box.Filler(minSize, prefSize, maxSize)); in y khong cch gia cc i tng
30/03/14 Bi ging dnh cho sinh vin ngnh Cng ngh Thng Tin 16
Boxlayout BoxLayout ch cc yu cu minimum, preferred, and
maximum size ca cc component
comp.setMinimumSize(new Dimension(50, 25));
comp.setPreferredSize(new Dimension(50, 25));
comp.setMaximumSize(new Dimension(200,200));
-
30/03/14 Bi ging dnh cho sinh vin ngnh Cng ngh Thng Tin 17
FlowLayout
public FlowLayout()
public FlowLayout(int alignment)
public FlowLayout(int alignment,int horizontalGap, int verticalGap)
+ i s nhn gi tr FlowLayout.LEFT, FlowLayout.CENTER, or FlowLayout.RIGHT.
+ horizontalGap and verticalGap ch ra khong cch pixels gia cc component.
30/03/14 Bi ging dnh cho sinh vin ngnh Cng ngh Thng Tin 18
GridLayout
public GridLayout(int rows, int columns)
public GridLayout(int rows, int columns, int horizGap, int vertGap) phi c t nht colmn hoc rows khc 0
30/03/14 Bi ging dnh cho sinh vin ngnh Cng ngh Thng Tin 19
GridBagLayout
B tr component tri trn nhiu hng v ct vi kch thc khc nhau
Thit lp 1 mng li lin kt vi container v b trcc component trn 1 hoc nhiu
30/03/14 Bi ging dnh cho sinh vin ngnh Cng ngh Thng Tin 20
LayoutManager interface
public void layoutContainer(Container parent)
parent l container cn qun l
Hm setBounds() c gi cho mi component c a vo parent, v tr ca mi component nn c xc nh theo cng thc tng i so vi kch thc ca parent
L phng n qun l layout tt vi cc container cha t component
-
30/03/14 Bi ging dnh cho sinh vin ngnh Cng ngh Thng Tin 21
III. Cc thnh phn GUI c bn
JTextField
JLabel
JPasswordField
JTextArea
JComboBox
JButton
JCheckBox
JRadioButton
Hm dng, cc hm getXXX, gn Listener
30/03/14 Bi ging dnh cho sinh vin ngnh Cng ngh Thng Tin 22
III. Cc thnh phn GUI c bn
JComponent
JComponent l lp c s abstract ca tt c cc Swing components (c tn bt u ch J ngoi trtop-container)
K tha t Component v Container
ng gi hu ht cc c im v thao tc c bn ca 1 thnh phn GUI
Setting borders and boundering
Request focus and keystroke handling
Aligning, scrolling, resizing behaviour
Tooltip, listener, double buffering
30/03/14 Bi ging dnh cho sinh vin ngnh Cng ngh Thng Tin 23
JComponent methods
30/03/14 Bi ging dnh cho sinh vin ngnh Cng ngh Thng Tin 24
JComponent methods event handling
-
30/03/14 Bi ging dnh cho sinh vin ngnh Cng ngh Thng Tin 25
JComponent methods event handling
30/03/14 Bi ging dnh cho sinh vin ngnh Cng ngh Thng Tin 26
JComponent methods - painting
30/03/14 Bi ging dnh cho sinh vin ngnh Cng ngh Thng Tin 27
JComponent methods - Containment
30/03/14 Bi ging dnh cho sinh vin ngnh Cng ngh Thng Tin 28
JComponent methods - Layout
-
30/03/14 Bi ging dnh cho sinh vin ngnh Cng ngh Thng Tin 29
JComponent methods - Layout
30/03/14 Bi ging dnh cho sinh vin ngnh Cng ngh Thng Tin 30
JComponent methods - Absolute Size and Position
30/03/14 Bi ging dnh cho sinh vin ngnh Cng ngh Thng Tin 31
IV. Lp trnh x l s kin
Tng tc GUI user c biu din v x l trn c s m hnh y thc (delegation model) Event: s kin tng tc ( kch chut)
Event source: ni pht sinh s kin (button)
Event Listener: i tng c y quyn x l skin.
Khi mt s kin din ra, listener- l i tng c y thc x l - s triu gi 1 hm x l s kin tng ng
Cho php nhiu listener cng x l 1 s kin
30/03/14 Bi ging dnh cho sinh vin ngnh Cng ngh Thng Tin 32
IV.2 Cc loi s kin
Event cp thp Event AWTEvent
KeyEvent MouseEvent WindowEvent
Event cp cao: semantic event FocusEvent ActionEvent
public Object getSource() public String getActionCommand()
-
30/03/14 Bi ging dnh cho sinh vin ngnh Cng ngh Thng Tin 33
IV.3 Cc lp listener
Tng ng vi mi loi event, listener tng ng c ng k x l eventJButton b= new JButton(OK);b.addActionListener(new OKListener());
Cc lp Listener c pht trin theo cc khun mu interface nh ngha ActionListener
KeyListener
MouseListener
FocusListener
Ngi lp trnh vit m cho cc hm x l.
30/03/14 Bi ging dnh cho sinh vin ngnh Cng ngh Thng Tin 34
Tm tt
Cu trc v cch t chc giao din ng dng GUI
S dng cc lp layout manager
S dng v ty bin cc GUI component
Lp trnh x l s kin
30/03/14 Bi ging dnh cho sinh vin ngnh Cng ngh Thng Tin 35
Ti liu tham kho
Chng 7 Core Java -Vol I
Bi tp thc hnh Vit ng dng hin th dng ch Welcome to
Swing chnh gia ca s. B tr 2 button cui mn hnh nt Tng v Gim khi ngi s dng click vo th c ch hin th tng hoc gim tng ng.