Professional Documents
Culture Documents
Bai Giang 05 - Swing
Bai Giang 05 - Swing
Bai Giang 05 - Swing
Ni dung
Gii thiu AWT v Swing Xy dng Java GUI c bn C ch kim sot s kin ngi dng
AWT (Abstract Window Toolkit) (java.awt.*) cung cp mt tp hp cc lp dng vit giao din ngi dng dng ha B khung (framework) GUI c cho Java (Java 1.1)
c im:
Bao gm tp hp cc lp ngang hng, tc l giao din lp trnh ng dng cho cc tnh nng ca s hin c c cung cp bi h iu hnh. AWT cung cp hai m hnh x l bin c:
AWT cung cp cc lp cha (container) v cc thnh phn (component) n gin ha vic xy dng cc chng trnh. AWT qun l b cc theo cc s t chc khc nhau.
Hn ch:
Chim nhiu ti nguyn h thng (heavyweight object) Kh m rng (khng c cc cng ngh h tr) Mt s da vo cc bn sao m bn ng (native code) Gp cc vn c lp h nn
Gm 5 phn chnh:
Swing AWT (Abstract Windows Toolkit): l thnh phn cng c thit k v lp trnh giao din c bn nht trong Java Accessibility API: L b cng c gip ngi dng kt ni vi cc thit b nh bn phm ni, b c ch t ngcho php truy xut trc tip ti cc thnh phn Swing 2D API: cha cc lp hin thc nhiu kiu v, cc hnh phc tp, fonts, colors. 2D API khng phi l 1 phn ca Swing Drag and Drop: cho php ngi dng chn gi mt i tng GUI ri di chuyn qua cc ca s hoc frame khc
Swing (javax.swing.*)
B khung GUI mi c gii thiu u tin trong Java 1.2 Bao gm tt c nhng c tnh ca AWT cng vi nhiu c tnh tin tin khc Thun Java, cc thnh phn nh (lightweight) (khng da vo m bn ng) Kin trc cm quan (look and feel)
Cc u im ca Swing:
Cc thnh phn ca Swing chim t ti nguyn h thng hn v chng khng ngang hng ring trong h iu hnh. H tr khi nim pluggable look-and-feel, cung cp thm nhiu din mo ngi dng la chn H tr cc cng ngh nhp xut mi: ting ni v thao tc khng mouse D dng m rng:
Swing s dng kin trc MVC xy dng cc thnh phn, chng trnh ca mnh, MVC chia mi thnh phn giao din thnh 3 phn;
Model
Phn cha ni dung trng thi ca cc thnh phn GUI Mi kiu thnh phn GUI c 1 model khc nhau Th hin trc quan thnh phn GUI Qun l cch thc tng tc gia cc thnh phn GUI vi cc s kin ngi dng: click chut, nhp phm
View
Controller
Model
View
Controller
Swing hin thc 1 m hnh MVC kh n gin cn c gi l model-delegate M hnh ny ni View v Controller thnh 1 i tng duy nht gi l UI-delegate
UI-delegate lm 2 nhim v:
Model UI-delegate
AWT v Swing cung cp tp hp cc lp Java cho php to cc giao din ha (GUI) Cung cp cc thnh phn to hot ng v hiu ng GUI nh:
Container (b cha) Component (thnh phn GUI) Layout manager (b qun l b cc) Graphic v drawing capabilitie (v ha) Font (phng ch) Event (s kin)
Panel Window
TextField
TextArea
LayoutManager
CheckBoxGroup Canvas
MenuComponent
MenuItem MenuBar
Menu
Scrollbar
AbstractButton
JButton
JToggleButton
JComponent
JTextComponent
JLabel
JList
JComboBox JFileChooser
JMenuBar
JPanel
JOptionPane
JScrollBar
JScrollPane
JTabbedPane
V d: To ca s vi Swing
ngng dng HelloWorld c bn To mt Ca s vi HelloWorldString trong thanh tiu v hin th label Hello World
C bn v thit k GUI
Khi nim xy dng GUI rt n gin. Nhng thnh phn (component) c b tr trong mt b cha (container) theo cch thc c t chc no . Nhng component c th l cc i tng (nh Button, Menu, Label, Textbox, Slider, Checkbox, Radio button,) hoc c th cc b cha lng nhau, Nhng thnh phn c t chc trong nhng b cha s dng b qun l b cc (Layout Manager)
Component
L cc i tng c biu din ha c hin th ln mn hnh m ngi dng tng tc c V d: nt nhn, checkbox, scrollbar
Container
i tng vt cha hay nhng i tng c kh nng qun l v nhm cc i tng khc li Mt s i tng container trong java:
Panel
i tng khung cha n gin nht dng nhm cc i tng, thnh phn con li vi nhau Mt Panel c th cha 1 Panel khc Tng t Panel nhng c thm 2 thanh trt gip ta t chc v xem cc i tng ln L mt ca s dng hp thoi Dng a ra cc thng bo, ly d liu nhp t ngi dng
ScrollPanes
Dialogs
Container
Frame, JFrame
L mt ca s Windows mc trn cng gm tiu v ng bin nh cc ng dng Windows thng thng khc Thng c dng to ra ca s chnh cho cc ng dng khc
Container
Top-level component: l thnh phn trn cng ca bt k Swing containment hierarchy no.
Dialog
Frame
Applet
Container
Panel
Scroll pane
Container
Internal Frame
Layered pane
Cu trc JFrame
getContentPane()
Buttons
Combo Box
List
Menu
Text fields
Slider
Dng hin th thng tin cho ngi s dung Khng th sa i ni dung thng tin
Label
Tool tip
Progress Bar
Dng hin th cc thng tin nh dng Cho php ngi dng la chn nh dng
Color Chooser
File Chooser
Table
Text
Tree
Dng xc nh kch thc v v tr ca cc thnh phn GUI Mi thnh phn s c 1 Layout manager mc nh Cc Layout manager Java h tr:
BorderLayout
BoxLayout
CardLayout
Cho php hin th nhiu component khc nhau ti nhiu thi im khc nhai
FlowLayout
GridLayout
GridBagLayout
Thm cc i tng vo cc li nh sn, nhng cho php ngi dng m rng ch cha cho cc component (khng ch 1 )
Chut nhn v chuyn ng, nt nhn v vn bn nhp thng qua bn phm, nhn vo cc mc menu, Thao tc mong mun sinh ra mt hnh ng trn mi cc s kin ny
Gi java.awt.event.*, java.swing.event.*
Gi java.awt.event.*
Object EventObject AWTEvent TextEvent ComponentEvent ActionEvent AdjustmentEvent ItemEvent ContainerEvent FocusEvent PaintEvent WindowEvent InputEvent
KeyEvent
MouseEvent
Ngun s kin
Cc lp thnh phn GUI m ngi s dng tng tc. Bn c th ng k Listener p ng vi nhng s kin nht nh Nhn i tng s kin khi c thng bo v thc hin p ng thch hp. Nhiu kiu ca b lng nghe tn ti cho cc s kin c th nh MouseListener, ActionListener, KeyListener, Cc giao tip c hin thc v ci t cc hnh ng ng gi thng tin v s kin xut hin Cc i tng s kin c gi ti b lng nghe khi s kin xut hin trn thnh phn GUI
M hnh x l s kin
Ci t phng thc x l s kin (cc phng thc ca giao tip b lng nghe s kin)
V d: vi b lng nghe s kin ActionListener cn ci t phng thc: public void actionPerformed(ActionEvent ev) { }
V d
Mt ActionListener c hin thc v i tng lng nghe c ng k vi mt thnh phn JButton. Khi nt c nhn, mt s kin t ng c pht sinh v phng thc tng ng ci t trong ActionListener c gi (actionPerformed)
V d
V d
Painting
Cc repaint: bt u repaint vi thnh phn cao nht cn repaint i xung cho ti ht cy phn cp thnh phn. Cc thnh phn thng s repaint mi khi cn thit
V d
V d
JFrame s repaint u tin Content pane s repaint background ca n ri bo cho JPanel v li JPanel repaint background ca n sau v li ng bin bo cho cc thnh phn con v li JButton s v li background ca n ri sa li on text m n cha JLabel s repaint on text ca n.
Bng cch dng phng thc setToolTipText, bn c th cung cp cc gi tr gip cho ngi s dng Khi con tr lt qua vng ca component tooltip s hin th
JComponent: border
Phng thc setBorder cho php ngi s dng ch nh ng bin xung quanh component Bn c th s dng lp BorderFactory to ra 1 s border thng gp
Vic hin th ca cc component ph thuc vo ComponentUI bn di Bn c th dng phng thc UIManager.setLookAndFeel thay i cch hin th ca cc thnh phn.
public
static void main(String[] args) { try { UIManager.setLookAndFeel( UIManager.getCrossPlatformLookAndFeelClassName()); } catch (Exception e) { } new SwingApplication(); //Create and show the GUI.
Nu bn thit lp look and feel trc khi bt c thnh phn UI no c to ra th chng trnh s c gng thit lp look and feel theo thng s bn truyn vo
swing.properties
Nu bn thit lp li look and feel sau khi c thnh phn UI to ra th bn s lm nh sau cp nht look and feel cho cc thnh phn nay:
UIManager.setLookAndFeel(lnfName); SwingUtilities.updateComponentTreeUI(frame);
Summary