Swing là một tập các lớp trong JFC, nó cho phép tạo ra các giao diện hấp dẫn.. Swing không chỉ thay thê AWT mà còn cung cấp thêm rất nhiều component phức tạp khác tab, scroll pane, tree.
Trang 1Swing-Lập trình đồ họa
trong Java
Trang 2JFC - Java Foundation Class
quá trĩnh thiết kê và giảm thời gian lập trình
JFC mở rộng AWT bằng cách thêm vào các lớp và các GUI component
Trang 3Swing là một tập các lớp trong JFC, nó cho phép tạo ra các giao diện hấp dẫn
Swing không chỉ thay thê AWT mà còn cung cấp thêm rất nhiều component phức tạp khác (tab, scroll pane, tree )
Trang 4Swing vs AWT
AWT: Abstract Windows Toolkit:
• Java 1
• ĐƯỢc gắn với platform xác định
• Thích hỢp với việc phát triển các ứng dụng GUI đơn giản Swing components:
• Java 2
• Không gắn với platform cô định
• Mạnh, đa năng, linh hoạt
Trang 5Swing Look and Feel
Look and Feel cung cấp một giao diện đồng nhất v ề màu sắc, hình dạng, bô cục ( Look) và hành vi của các thành phần ( Feel)
Swing cho phép người dùng lựa chọn look and fe e l: Java, GTK+, Windows
Khi người dùng không chỉ rõ Look and Feel thi Swing UI Manager sẽ xác định Look and Feel nào sẽ được sử dụng
Trang 6Các thành phần GUI
radio button, combo box,
JLabel, JTextField, JCheckBox, JRadioButton,
JComboBox,
Mỗi lớp thành phần GUI có một sô constructor đ ể tạo
Trang 7Câu trúc phân cãp thành phân
Cấu trúc thành phần nhìn từ trên xuống bao gồm :
Top-level Container(s):
•! *! / f ỳ ít "ýt "ĨXA/
YY f f yiS L'Y Y
Dỉ3.bg JDidhg
X Ííđỉììe JFranie
JWffidow
Intermediate Container(s): trực tiếp chứa các thành phần GUI khác.
Atomic Component(s): IButton, J Label
Trang 8Top-level Containers
NÓ được dùng đ ể chứa các thành phần khác
JApplet.
Jdialog
Jframe
Jwindow.
Trang 9intermediate Containers
Các intermediate Container mục đích chung:
All Folders I * ] cookies File Options Com meine ojfSiGiii
E
Meters ▼
V I
A * 4
Home Search Gu
iLJ
All Folders
B O O T
^ jpBfllipff
C j A d o b e
as] urlpool
Panel
SplitPane TableView DebugGraphics
Swing! Bi
Scroll pane Split pane
Các internediate mục đích đặc biệt:■ _ “ _ ■ ,
Tabbed pane
In te rn a lFra m e D e m o
Document
Docunmnt #1 : ị ■ : : 1 / ^ 0
F I Document u2
C hoose D u ke 's L ayer and P o sitio n
H Top P o sitio n in Layer
M agenta (1)
M ove tile M o u se to M ove Duke
Y e llo w (0)
M agenta (1) if ïn tP a n î *L
Root P a n e ' Content P a n r l
^ _ ^ ^ - L a y e r e d Pane Menu Bar
■«-Glass Pane
Trang 10Atomic Components
Atomic Components - Các điẻu khiển cơ bản
[Monday
v ầ
IE Cl
«
heck 1
|) Radio 2
OK
Monday Theme Help
January February
▲
i?metal etri-ffi r
March I?Organic Ctrl-0 I
April ▼ □ metal2 ctfi-2
|George W ashington [Thom as Jefferson
¡Benjam in Franklin
Text field Các Atomic componéis phục vụ hiến thị và không thê
thay đổi thông tin : Label, Progress b a r, Tooltip
Các Atomic componéis hiển thị cho phép thay đổi thông
tin:color chooser, File Chooser,Table, Text, Tree
Trang 12c ấ u trúc một ứng dụng GUI
GUI
J J T l d m e
JPanel
JButton
JLabel
C ẩu trúc bẽn trong
Trang 13Một ứng dụng mẫu
import javax.swing.*;
class hello {
public static void main(String[] args){
JFrame f = new JFrame(“title”);
JPanel p = new JPanel();
JButton b = new JButton(“press me”);
p.add(b); // add button to panel f.setContentPane(p); // add panel to frame
f.show();
}
}
Trang 14Layout Managers
null
Không có layout,
lập trình viên phải tự
xác định x,y,w,h
BorderLayout
n
c s
FlowLayout
T ừ trái sang p hảit Trên xuống dưới
CardLayout
GridLayout
GridBagLayout
JButton
I
Trang 15Thiết lập Layout Manager
LayoutM anager layM an = new XLayout(); container.setLayout(layM an);
XLayout:
• FlowLayout
• GridLayout
• BorderLayout
• CardLayout
• GridBagLayout
Trang 16Phöi höp câc Layout Manager
igFratne 1
JButton JButton
JTextArea
Trang 17Phôi höp câc Layout Manager