Đối tượng JFrame sử dụng content pane để chứa các thành phần trong frame.. 11.3 Layout Managers 11.3 Layout Managers[r]
Trang 1LẬP TRÌNH JAVA
Trang 311.1 Sơ đồ phân cấp lớp GUI
Các thành phần GUI
check box, radio button, combo box, …
lớp: JButton, JLabel, JTextField, JCheckBox, JRadioButton, JComboBox, …
constructor để tạo các đối tượng thành phần GUI.
Trang 411.1 Sơ đồ phân cấp lớp GUI
Swing vs AWT
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
Java 2
Không gắn với platform cố định
Mạnh, đa năng, linh hoạt
Trang 511.1 Sơ đồ phân cấp lớp GUI
Sơ đồ phần cấp lớp GUI (Swing)
Dimension Font
FontMetrics
Component Graphics
Object Color
Container
Panel Applet
Frame Dialog Window
JComponent
JApplet
JFrame JDialog
Trang 611.1 Sơ đồ phân cấp lớp GUI
Trang 711.1 Sơ đồ phân cấp lớp GUI
Trang 811.1 Sơ đồ phân cấp lớp GUI
Gồm các subclass của lớp JComponent
Các lớp GUI component (Swing):
Trang 911.1 Sơ đồ phân cấp lớp GUI
Trang 1011.1 Sơ đồ phân cấp lớp GUI
Các thành phần giao diện người sử dụng
Frame Pull-down Menus
User Interface Components (UI) Panel
Panel
Panel
UI
Panel UI
Panel UI
Applet
Panel
User Interface Components
Panel
User Interface Components
Panel
User Interface Components
Panel
User Interface Components panel
Pull-down Menus
Trang 12 Trong các chương trình Swing GUI, sử
dụng lớp JFrame để tạo các cửa sổ.
Trang 1311.2 Frames
import javax.swing.*;
public class MyFrame {
public static void main(String[] args) {
JFrame frame = new JFrame("Test Frame");
Trang 1411.2 Frames
Canh giữa Frame
bên trái của màn hình
dụng phương thức setLocation(x, y) trong lớp JFrame
tại vị trí có tọa độ (x, y).
Trang 15(0, 0)
Trang 1611.2 Frames
Đưa các thành phần vào trong Frame
// Dua nut bam vao trong frame
frame.getContentPane().add(new JButton("OK"));
Content pane là một lớp con của Container Câu lệnh
ở trên tương đương với 2 câu lệnh sau:
Container container = frame.getContentPane();
container.add(new JButton("OK"));
Content pane được sinh ra khi một đối tượng JFrame được tạo Đối tượng JFrame sử dụng content pane để chứa các thành phần trong frame
Trang 1811.3 Layout Managers
Thiết lập Layout Manager
chế để tự động ánh xạ các thành phần GUI của bạn trên tất cả các hệ thống cửa sổ.
container Mỗi container có một layout
manager để sắp xếp các thành phần đó
Trang 1911.3 Layout Managers
Thiết lập Layout Manager
LayoutManager layMan = new XLayout();
Trang 2011.3 Layout Managers
container từ trái sang phải, từ trên xuống
dưới theo thứ tự chúng được đưa vào
Trang 2111.3 Layout Managers
phần trong một lưới (ma trận) với số hàng
và số cột được xác định bởi constructor Các thành phần được đặt trong lưới từ trên
xuống dưới, từ trái sang phải
Trang 2211.3 Layout Managers
thành 5 khu vực: East, South, West, North,
và Center
Trang 24JPanel p = new JPanel();
p.add(new JButton("OK");
frame.getContentPanel().add(p);
Trang 25frame p2 p1
Trang 2811.4 Drawing
public class DrawMessage extends JPanel {
/** Main method */
public static void main(String[] args) {
JFrame frame = new JFrame("DrawMessage");
frame.getContentPane().add(new DrawMessage());
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); frame.setSize(300, 200);
frame.setVisible(true);
}
/** Paint the message */
public void paintComponent(Graphics g) {
super.paintComponent(g);
g.drawString("Welcome to Java!", 40, 40);
}
Trang 2911.4 Drawing
Lớp Graphics là một lớp trừu tượng để hiển thị hình vẽ
và ảnh trên màn hình trên các platform khác nhau
Lớp Graphics gói gọn các chi tiết platform và cho phép bạn vẽ các thứ theo cách giống nhau không liên quan đến các platform cụ thể
Lời gọi super.paintComponent(g) là cần thiết để đảm bảo rằng vùng hiển thị được xóa sạch trước khi hiển thị một bản vẽ
Trang 3111.5 Event-Driven Programming
theo thứ tự thủ tục.
kích hoạt sự kiện
Trang 3211.5 Event-Driven Programming
loại tín hiệu báo cho chương trình có điều gì đó đã xảy ra
Sự kiện được sinh ra bởi các hành động của người
sử dụng (ví dụ: di chuột, kích phím chuột, ấn phím) hoặc bởi HĐH (vd: timer)
Trang 3411.5 Event-Driven Programming
Source Event Type User Action Object Generated
Selected or deselected an item JList ItemEvent
with a single click
Selected or deselected an item JComboBox ItemEvent
Trang 3511.5 Event-Driven Programming
Trang 36người sử dụng trả lời, vd: OK hay Cancel
từ 1 text field, combo box hoặc list
từ một tập các lựa chọn
Trang 37Sử dụng phương thức tĩnh trong lớp JOptionPane
Trang 38Sử dụng phương thức tĩnh trong lớp JOptionPane