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ụ
https://trandinh.vn