You are on page 1of 35

Chng 7: X l s kin

GVLT: Trn Anh Dng

Nhc li GUI (1)


Tch c iu khin ca chng trnh vi d liu. Gi awt/swing ca Java bao gm mt tp cc lp cho php ngi lp trnh to ra GUI ca ng dng. Frame/JFrame v Panel/JPanel l cc container thng c dng to ra ng dng chy c lp (stand-alone application). Trnh qun l Layout manager gip b tr cc component ln GUI. Trong gi awt c 5 loi Layout khc nhau

Nhc li GUI (2)


Thit lp layout cho mt container. FlowLayout l b cc mc nh ca Panel BorderLayout l b cc mc nh ca Frame. GridLayout l cch b tr cc component vo container dng 1 li rows hng cols ct. GridBagLayout m rng ca GridLayout.
dng GridBagLayout GridBagConstraint.

NullLayout l cch b tr t do. Mt GUI c b cc phc tp phn tch thnh nhiu thnh phn, mi thnh phn l 1 panel c layout ring.
3

Ni dung
Gii thiu lp trnh hng s kin M hnh x l s kin Hnh ng, s kin v lng nghe. Cc lp s kin AWT, interface lng nghe s kin

Lp trnh x l s kin (1)


Lp trnh hng th tc (Procedural programming) Lp trnh hng s kin (event-driven programming) Ty vo cc tng tc gia ngi dng vi chng trnh:
Chn mt chc nng trong ng dng M hoc ng mt ca s Nhn dng vn bn Thay i tiu im (focus) Thay i trng thi

Lp trnh x l s kin (2)


Khi c mt tng tc xy ra th mt s kin c gi n chng trnh. Thng tin v s kin thng c lu tr trong mt i tng dn xut t lp AWTEvent. Nhng kiu s kin trong gi java.awt.event c th dng cho c nhng component awt v swing. i vi th vin JFC th c thm nhng kiu s kin mi trong gi java.swing.event.

M hnh x l s kin (1)


C 3 yu t quan trng trong m hnh x l s kin: Ngun pht sinh s kin (event source) S kin (event object) B lng nghe s kin (event listener)
EventObject User action

Generate an event

Notify listener

Trigger an event Source Object Register a listener object Listener Object Event Handler
7

M hnh x l s kin (2)


Ngun pht sinh s kin cn phi ng k b lng nghe x l khi ngi dng tc ng

class MyMenuItemListener implements ActionListener {

}
8

Cc lp s kin java.awt.event

Cc lp s kin (tt)
Lp s kin ActionEvent M t Pht sinh khi mt button c nhn, mt item trong danh sch chn la c nhp i hay mt menu c chn. Pht sinh khi mt thanh scrollbar c s dng. Pht sinh khi mt thnh phn c thay i kch thc, c di chuyn, b n hay lm cho hot ng c. Pht sinh khi mt thnh phn mt hay nhn focus. Pht sinh khi input c nhn t bn phm.
10

AdjustmentEvent ComponentEvent

FocusEvent KeyEvent

Cc lp s kin (tt)
Lp s kin ItemEvent M t Pht sinh khi mt menu item c chn hay b chn; khi mt checkbox hay mt item trong danh sch c click. Pht sinh khi mt ca s c kch hot, c ng, c m hay thot. Pht sinh khi gi tr trong thnh phn text field hay text area b thay i. Pht sinh khi chut di chuyn, c click, c ko hay b th ra.
11

WindowEvent

TextEvent

MouseEvent

Cc interface lng nghe s kin

12

Hnh ng, s kin, lng nghe


ActionEvent AdjustmentEvent ComponentEvent FocusEvent ItemEvent WindowEvent TextEvent MouseEvent KeyEvent ActionListener AdjustmentListener ComponentListener FocusListener ItemListener WindowListener TextListener MouseListener MouseMotionListener KeyListener
13

Hnh ng, s kin, lng nghe


Lp s kin B lng nghe
ActionEvent ItemEvent WindowEvent ActionListener ItemListener WindowListener

Hm x l
actionPerformed(ActionEvent) itemStateChanged(ItemEvent) windowClosing(WindowEvent) windowOpened(WindowEvent) windowIconified(WindowEvent) windowDeiconified(WindowEvent) windowClosed(WindowEvent) windowActivated(WindowEvent) windowDeactivated(WindowEvent)

ContainerEvent .

ContainerListener

componentAdded(ContainerEvent) componentRemoved(ContainerEvent)

14

Qui trnh x l s kin


Khai bo public MyClass implements ActionListener ng k Component.addActionListener(myclass); Ci t public void actionPerformed(ActionEvent e) { // }
15

V d x l s kin
V d 1: To b lng nghe bin c cho i tng khung cha Frame, v x l bin c ng ca s. To v ng k mt b lng nghe cho mt component trn GUI (Frame). Ci t cc phng thc qun l v x l s kin tng ng.

16

WindowEventDemo.java
import java.awt.*; import java.awt.event.*; public class WindowEventDemo{ public static void main(String args[ ]){ Frame f = new Frame ("WindowClosing Demo"); WindowCloser closer = new WindowCloser(); f.addWindowListener(closer); f.setBounds(10, 10, 300, 200); f.setVisible(true); } }
17

WindowCloser.java
import java.awt.event.*; class WindowCloser implements WindowListener{ public void windowClosing(WindowEvent e){ System.out.println("windowClosing.."); System.exit(0); } public void windowActivated(WindowEvent e){ System.out.println("windowActivated..."); } public void windowClosed(WindowEvent e){ System.out.println("windowClosed..."); } //
18

WindowCloser.java
public void windowOpened(WindowEvent e){ System.out.println("windowOpened..."); } public void windowDeactivated(WindowEvent e){ System.out.println("windowDeactivated..."); } public void windowDeiconified(WindowEvent e){ System.out.println("windowDeiconified..."); } public void windowIconified(WindowEvent e){ System.out.println("windowIconified..."); } }
19

V d X l s kin (2)
C th dng lp tru tng WindowAdapter to ra b lng nghe.

WindowAdapter hin thc interface WindowListener nn lp o ny cng c 7 phng thc ging nh giao din WindowListener

20

V d X l s kin (3)
V d 2: Trnh by cch tnh gp i ca mt s c nhp vo. Chng trnh c thc hin bng cch kt hp cc phng thc ca lp, ngha l cc phng thc x l s kin v giao din. Vic click trn mt button s lm khi ng ActionEvent v gi phng thc actionPerformed(). N s kim tra button c click vi s tr gip ca hm getSource() v tr v kt qu thch hp.

21

X l s kin chut (1)


Java cung cp hai intefaces lng nghe MouseListener MouseMotionListener qun l v x l cc s kin lin quan n thit b chut. Nhng s kin chut c th by cho bt k component no trn GUI m dn xut t java.awt.component. Mi phng thc x l s kin chut c mt tham s MouseEvent cha thng tin v s kin chut pht sinh chng hn nh: ta x, y ni s kin chut xy ra.
22

X l s kin chut (2)


Cc phng thc ca interface MouseListener: public void mousePressed(MouseEvent event) public void mouseClicked(MouseEvent event) c gi khi mt nt chut c nhn v nh trn component m khng di chuyn chut. public void mouseReleased(MouseEvent event) public void mouseEntered(MouseEvent event) c gi khi con tr chut vo trong ng bin ca mt component. public void mouseExited(MouseEvent event)
23

X l s kin chut (3)


Cc phng thc ca interface MouseMotionListener: public void mouseDragged(MouseEvent even ) Phng thc ny c gi khi ngi dng nhn mt nt chut v ko trn mt component. public void mouseMoved(MouseEvent event) Phng thc ny c gi khi di chuyn chut trn component.

24

X l s kin chut (4)


V d: Vit chng trnh MouseTracker minh ha vic dng nhng phng thc ca cc interfaces MouseListener v MouseMotionListener by v x l cc s kin chut tng ng.

Demo
25

X l s kin bn phm (1)


x l s kin bn phm java h tr mt b lng nghe s kin l interface KeyListener. Mt s kin bn phm c pht sinh khi ngi dng nhn v nh mt phm trn bn phm. Mt lp hin thc KeyListener phi ci t cc phng thc keyPressed, keyReleased v keyTyped. Mi phng thc ny c mt tham s l mt i tng kiu KeyEvent. KeyEvent l lp con ca lp InputEvent.

26

X l s kin bn phm (2)


Cc phng thc ca interface KeyListener: Phng thc keyPressed c gi khi mt phm bt k c nhn. Phng thc keyTyped c gi khi ngi dng nhn mt phm khng phi phm hnh ng (nh phm mi tn, phm Home, End, Page Up, Page Down, cc phm chc nng nh: Num Lock, Print Screen, Scroll Lock, Caps Lock, Pause). Phng thc keyReleased c gi khi nh phm nhn sau khi s kin keyPressed hoc keyTyped.
27

X l s kin bn phm (3)


V d: Minh ha vic x l s kin phm thng qua cc phng thc ca interface KeyListener. Xy dng lp KeyDemo hin thc interface KeyListener c 3 phng thc trong KeyListener phi c ci t trong chng trnh.

Demo

28

Mt s v d minh ha (1)
V d 1: Xy dng chng trnh v x l s kin nh sau

Chng trnh
29

Mt s v d minh ha (2)
V d 2: Xy dng chng trnh v x l s kin nh sau

Chng trnh

30

Mt s v d minh ha (3)
V d 3: X l s kin khi ngi dng chn ngy (Monday, Tuesday, ) trong List th chng trnh s hin th ngy tng ng trn nhn pha trn

Chng trnh
31

Mt s v d minh ha (3)
V d 3: Hin th ngy gi ca h thng Dng i tng lp Date (java.util.Date) S dng Timer (javax.swing.Timer) Date now= new Date(); int h=now.getHours(); int m=now.getMinutes(); int s=now.getSeconds();

32

Bi tp (1)
1. Vit chng trnh minh ha vic s dng mt s component c bn trong th vin java.awt v javax.swing 2. Vit chng trnh MyNotePad tng t NotePad ca Windows. 3. Vit chng trnh minh ha hot ng my tnh c nhn n gin.

33

Bi tp (2)
4. Vit chng trnh minh ha x l s kin menu nh sau

Ngun pht sinh s kin (MenuItem) cn phi ng k b lng nghe x l khi ngi dng tc ng
34

Hi & p

35

You might also like