Kết thúc bài học này bạn có khả năng
Giới thiệu gói thư viện AWT
Giới thiệu SWING
So sánh AWT và Swing
Container trong Java Swing
Container Component (JFrame, JPanel)

GIỚI THIỆU GÓI THƯ VIỆN AWT

 AWT viết tắt của Abstract Windowing Toolkit
 AWT là tập hợp các lớp Java cho phép chúng ta tạo một
GUI.
 Cung cấp các mục khác nhau để tạo hoạt động và hiệu
ứng GUI
 Tạo liên kết giao diện giữa ứng dụng Java và OS
 Chiếm nhiều tài nguyên hệ thống (Heavy-weight
component)
 Package java.awt
 Gồm nhiều phần tử (class) để tạo GUI.
 Có (event-oriented application) mô hình ứng dụng hướng
sự kiện.
 Có các công cụ xử lý đồ họa và hình ảnh.

GIỚI THIỆU GÓI THƯ VIỆN AWT

AWTEvent
Font
FontMetrics

Component
Graphics
Object Color

Canvas
Button

TextComponent
Label

List

CheckBoxGroup
CheckBox
Choice
Container Panel Applet
Frame
Dialog FileDialog

Window

TextField

TextArea

MenuComponent MenuItem
MenuBar

Menu

Scrollbar

LayoutManager

GIỚI THIỆU GÓI THƯ VIỆN AWT

Các nguyên tắc xây dựng ứng dụng GUI
Lựa chọn một container: Frame, Window, Dialog,
Applet,...
Tạo các control: (buttons, text areas, list, choice,
checkbox,...)
Đưa các control vào vùng chứa
Sắp xếp các control trong vùng chứa (Layout).
Thêm các xử lý sự kiện (Listeners)

GIỚI THIỆU GÓI THƯ VIỆN AWT


Chạy và giải thích

GIỚI THIỆU SWING

 SWING là sự mở rộng AWT
 Tạo giao diện nhất quán độc lập với môi trường
 Đa luồng và nhẹ(Light-weight component) với nhiều đặc
điểm nâng cấp
 Có khả năng tùy biến tại thời điểm runtime
 Không sử dụng trộn lẫn AWT và SWING GUI component
trên cùng một giao diện
 Package java.swing
 Sự xuất hiện thêm Swing từ Java 1.2 nhằm giúp khắc phục
sự khó khăn của AWT khi cần bổ sung thêm các widget mới
 Đặc biệt, khắc phục bộ mặt nghèo nàn của chương trình
viết bằng AWT so với các giao diện khác (chẳng hạn với
MFC (Microsoft Foundation Classes) của Microssoft

SO SÁNH AWT VÀ SWING

 Xây dựng bằng native code
 Khó phát triển thêm các
linh kiện(widget) mới

 Xây dựng hoàn toàn bằng JAVA API
 Dễ phát triển các linh kiện
 Có thể thay đổi diện mạo của linh
kiện lúc runtime
 Mô hình MVC
(Model – View – Controller)

AWT SWING

SO SÁNH AWT VÀ SWING

AWT SWING

Có thể bổ sung thêm biểu tượng bên
cạnh dòng chữ vào Label, Button,
Menu item
 Tạo đường viền và ghi tựa cho các
thành phần Swing

SO SÁNH AWT VÀ SWING

AWT SWING

 Có thể chọn một thành phần
Swing bằng Cách dùng phím
thay cho chuột
 Các thành phần Swing sử dụng
các nhãn Unicode, vì vậy có thể
đưa tiếng Việt vào các thành
phần này

Vậy SWING là sự thay thế của AWT?

SO SÁNH AWT VÀ SWING

Không. Swing thực tế được xây dựng trên phần lõi của AWT,
bởi vì Swing không chứa bất kỳ mã dành cho nền tảng nào
(native code)
Mô tả mối quan hệ giữa AWT, SWING, và JDK:

Kiến trúc SWING

SO SÁNH AWT VÀ SWING

CONTAINER TRONG JAVA SWING

 Thành phần chứa trong Swing, hay còn gọi là Container
 Có 2 kiểu Container trong Swing, đó là Top-level
Container và Multi-purpose Container
 Swing cung cấp các loại Top-level Container đó là:
JFrame
JDialog
JApplet: được sử dụng cho ứng dụng web
JWindow: loại này không có đặc điểm gì cả, chỉ là một
màn hình chờ được bật lên trong lúc khởi động
(Splash – Screen)

 General-purpose thì gồm có: JPanel, JLayered,
JInternalFrame, và JDesktopPane

JFRAME
Khi thêm các thành phần (component ) vào JFrame chúng ta
không thêm trực tiếp, thay vào đó, phần lớn các thành phần sẽ
thêm vào ContentPane bằng cách gọi phương thức:
getContentPane().add(component);
Tạo JFrame tự code:

JFrame sau khi được tạo thì chúng ta sẽ không nhìn thấy được nó. Để
nhìn được nó chúng ta phải nhờ đến phương thức
setVisible(boolean value).
Thiết lập độ rộng và cao của JFrame.
setSize(width, heigh)
Khi JFrame đã được nhìn thấy, muốn đóng lại dùng phương thức
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
Nếu không dùng hàm này để đặt, thì mặc định là: HIDE_ON_CLOSE:
Khi đóng frame sẽ bị ẩn đi chứ hoàn toàn không đóng lại.
Các lựa chọn khác gồm:
 DO_NOTHING_ON_CLOSE (0) – không làm gì cả
 DISPOSE_ON_CLOSE (2) – Chỉ đóng frame đó, các frame khác liên
quan sẽ không bị đóng.
 EXIT_ON_CLOSE (3) – Đóng toàn bộ các frame liên quan tới nó.
JFRAME

 Đặt vị trí xuất hiện của JFrame trên màn hình.
setLocation(x,y)
 Đặt JFrame xuất hiện chính giữa màn hình
setLocationRelativeTo(null)
 Đặt kích thước Jframe vừa đủ với nội dung
pack()
 Đặt JFrame có thể được thay đổi kích thước hay không,mặc
định là True.
setResizable(boolean)
 Đặt màu nền cho JFrame
getContentPane().setBackground(Color.”Color )

JFRAME

JFRAME-VÍ DỤ CODE

Dùng Netbean

JFRAME-VÍ DỤ NETBEANS

Dùng Netbean

JFRAME

-VÍ DỤ

NETBEANS

Dùng Netbean

Code generated

JFRAME-VÍ DỤ NETBEANS


 JPanel là một container dùng để chứa các thành phần đồ họa
khác (tương tự như JFrame tuy nhiên nó không phải là 1
JFrame).
 Trong một JFrame chứa các JPanel, trong mỗi JPanel lại có thể
chứa các đối tượng hoặc thậm chí là các JPanel khác.
 Ví dụ: Một giao diện có thể có nhiều panel sắp xếp theo một
layout nhất định, mỗi panel lại có các component sắp xếp
theo một layout riêng.
 Panel có bố cục mặc định là FlowLayout.

JPANEL

Button

TextField

12 Button

Panel(GridLayout)
Panel(BorderLayout)

Frame(BorderLayout)

JPANEL

Chúng ta có 2 Phương thức khởi tạo JPanel đó là:
 JPanel(): Tạo 1 JPanel với Layout mặc định là
FlowLayout(cách bố trí mà các đối tượng nối tiếp
nhau).
 JPanel(LayoutManager layout): Tạo 1 JPanel với
Layout được chỉ định.
Ví dụ:

JPANEL

Đặt Layout cho JPanel
setLayout(“layout”)
Thiết lập vị trí và kích thước cho JPanel
setBound(x,y,width,heigh)
Đặt màu nền cho JPanel
setBackground(Color.”color”)
Đặt đường viền cho JPanel
Có nhiều kiểu đường viền
Sử dụng phương thức setBorder(new “kiểu-border”)
Cùng xem ví dụ