swing

9
Lp trình chuyên nâng cao Chương II Lp trình GUI vi Swing Biên son: ThS Nguyn Văn Lành 30/03/14 Bài ging dành cho sinh viên ngành Công nghThông Tin 2 Mc tiêu Hoàn thành chương ny, sinh viên phi đạt được nhng đim sau: Hiu cu trúc và nm vng kỹ năng lập trình tchc 1 giao din người dùng đồ ha trong Java Biết cách lp trình tùy biến các đối tượng GUI trong thư vin Swing Hiu cơ chế xlý skin tương tác người dùng và nm vũng kỹ năng lập trình phát trin các đối tượng xlý skin. Kỹ năng tự tìm hiu và sdng các GUI component có sn trong thư vin 30/03/14 Bài ging dành cho sinh viên ngành Công nghThông Tin 3 Ni dung Gii thiu chung vAWT & Swing Cu trúc chung ca các giao din GUI Các lp vt cha & trình qun lý layout Các thành phn GUI cơ bn Cơ chế xlý skin tương tác người dùng Các lp listener cơ bn & cách tùy biến 30/03/14 Bài ging dành cho sinh viên ngành Công nghThông Tin 4 I. Gii thiu chung vAWT & Swing AWT: Abstract Windows Toolkit Thư vin API cung cp các đối tượng GUI To liên kết giao din gia ng dng Java và OS Heavy-weight component Package java.awt

Upload: khoantd

Post on 17-Nov-2015

213 views

Category:

Documents


0 download

DESCRIPTION

Swing

TRANSCRIPT

  • 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.