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


Top Related