Đố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]
(1)LẬP TRÌNH JAVA
LẬP TRÌNH JAVA
Bài 11
(2)Nội dung Nội dung
11.1 Sơ đồ phân cấp lớp GUI
11.2 Frames
11.3 Layout Managers
11.4 Drawing
(3)11.1 Sơ đồ phân cấp lớp GUI 11.1 Sơ đồ phân cấp lớp GUI
Các thành phần GUI
Các đối tượng GUI: button, label, text field,
check box, radio button, combo box, …
Mỗi loại đối tượng xác định
lớp: JButton, JLabel, JTextField, JCheckBox, JRadioButton, JComboBox, …
Mỗi lớp thành phần GUI có số
(4)11.1 Sơ đồ phân cấp lớp GUI 11.1 Sơ đồ phân cấp lớp GUI
Swing vs AWT
AWT: Abstract Windows Toolkit:
Java
Được gắn với platform xác định
Thích hợp với việc phát triển ứng dụng GUI
đơn giản
Swing components:
Java
(5)11.1 Sơ đồ phân cấp lớp GUI 11.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 Swing Components Heavyweight Classes in the java.awt
package
LayoutManager
(6)11.1 Sơ đồ phân cấp lớp GUI 11.1 Sơ đồ phân cấp lớp GUI
(7)11.1 Sơ đồ phân cấp lớp GUI 11.1 Sơ đồ phân cấp lớp GUI
Các lớp GUI: nhóm container
Được dùng để chứa thành phần khác.
Các lớp container (Swing):
(8)11.1 Sơ đồ phân cấp lớp GUI 11.1 Sơ đồ phân cấp lớp GUI
Các lớp GUI: nhóm component
Gồm subclass lớp JComponent Các lớp GUI component (Swing):
JButton JLabel
JTextField JTextArea JComboBox JList
JRadioButton JMenu
(9)11.1 Sơ đồ phân cấp lớp GUI 11.1 Sơ đồ phân cấp lớp GUI
Các lớp GUI: nhóm helper
Được component container dùng để
vẽ đặt đối tượng.
Các lớp helper (Swing):
Graphics Color
Font
FontMetrics Dimension
(10)11.1 Sơ đồ phân cấp lớp GUI 11.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
(11)Nội dung Nội dung
11.1 Sơ đồ phân cấp lớp GUI
11.2 Frames
11.3 Layout Managers
11.4 Drawing
(12)11.2 Frames 11.2 Frames
Frame cửa sổ không chứa
cửa sổ khác
Frame tảng để chứa thành
phần GUI khác ứng dụng Java GUI.
Trong chương trình Swing GUI, sử
(13)11.2 Frames 11.2 Frames
import javax.swing.*; public class MyFrame {
public static void main(String[] args) {
JFrame frame = new JFrame("Test Frame"); frame.setSize(400, 300);
frame.setVisible(true);
frame.setDefaultCloseOperation( JFrame.EXIT_ON_CLOSE);
(14)11.2 Frames 11.2 Frames
Canh Frame
Mặc định, frame hiển thị góc
bên trái hình
Để hiển thị frame vị trí xác định, sử
dụng phương thức setLocation(x, y) lớp JFrame
Phương thức đặt góc trái frame
(15)11.2 Frames 11.2 Frames
Canh Frame
screenHeight
screenWidth
getHeight()
getWidth() (x, y)
Frame Screen
(16)11.2 Frames 11.2 Frames
Đưa thành phần vào Frame
// Dua nut bam vao frame
frame.getContentPane().add(new JButton("OK"));
Content pane lớp Container Câu lệnh
ở tương đương với câu lệnh sau:
Container container = frame.getContentPane(); container.add(new JButton("OK"));
Content pane sinh đối tượng JFrame
(17)Nội dung Nội dung
11.1 Sơ đồ phân cấp lớp GUI
11.2 Frames
11.3 Layout Managers
11.4 Drawing
(18)11.3 Layout Managers 11.3 Layout Managers
Thiết lập Layout Manager
Các layout manager Java cung cấp
chế để tự động ánh xạ thành phần GUI của bạn tất hệ thống cửa sổ.
Các thành phần GUI đặt
(19)11.3 Layout Managers 11.3 Layout Managers
Thiết lập Layout Manager
LayoutManager layMan = new XLayout(); container.setLayout(layMan);
XLayout:
FlowLayout GridLayout BorderLayout CardLayout
(20)11.3 Layout Managers 11.3 Layout Managers
FlowLayout Manager
Các thành phần xếp
(21)11.3 Layout Managers 11.3 Layout Managers
GridLayout Manager
GridLayout manager xếp thành
phần lưới (ma trận) với số hàng và số cột xác định constructor Các thành phần đặt lưới từ
(22)11.3 Layout Managers 11.3 Layout Managers
BorderLayout Manager
BorderLayout manager chia container
(23)11.3 Layout Managers 11.3 Layout Managers
BorderLayout Manager
Các thành phần đưa vào BorderLayout
phương thức add:
add(Component, constraint)
constraint:
(24)11.3 Layout Managers 11.3 Layout Managers
Sử dụng Panel làm Container
Các panel đóng vai trị container nhỏ để
nhóm thành phần GUI
Bạn nên đặt thành phần GUI panel
đặt panel frame, đặt panel panel
JPanel p = new JPanel(); p.add(new JButton("OK");
(25)11.3 Layout Managers 11.3 Layout Managers
Sử dụng Panel làm Container
Chương trình tạo giao diện cho lị vi sóng, sử
dụng panel để tổ chức thành phần
A button
A textfield 12 buttons
(26)Nội dung Nội dung
11.1 Sơ đồ phân cấp lớp GUI
11.2 Frames
11.3 Layout Managers
11.4 Drawing
(27)11.4 Drawing 11.4 Drawing
JPanel cịn sử dụng để vẽ đồ họa,
văn cho phép tương tác với người sử dụng
Để vẽ panel:
Tạo lớp subclass JPanel
Chồng phương thức paintComponent
Sau hiển thị chuỗi ký tự, vẽ khối
(28)11.4 Drawing 11.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);
(29)11.4 Drawing 11.4 Drawing
Lớp Graphics lớp trừu tượng để hiển thị hình vẽ
và ảnh hình platform khác
Lớp Graphics gói gọn chi tiết platform cho phép
bạn vẽ thứ theo cách giống không liên quan đến platform cụ thể
Lời gọi super.paintComponent(g) cần thiết để
(30)Nội dung Nội dung
11.1 Sơ đồ phân cấp lớp GUI
11.2 Frames
11.3 Layout Managers
11.4 Drawing
(31)11.5 Event-Driven Programming 11.5 Event-Driven Programming
Lập trình hướng thủ tục (Procedural
programming) chương trình thực theo thứ tự thủ tục.
Trong lập trình hướng kiện (event-driven
(32)11.5 Event-Driven Programming 11.5 Event-Driven Programming
Sự kiện
Một kiện (event) định nghĩa
loại tín hiệu báo cho chương trình có điều xảy
Sự kiện sinh hành động người
(33)11.5 Event-Driven Programming 11.5 Event-Driven Programming
Các lớp Sự kiện
Các lớp kiện nằm gói java.awt.event
(34)11.5 Event-Driven Programming 11.5 Event-Driven Programming
Các lớp Sự kiện
Source Event Type
User Action Object Generated
Clicked on a button JButton ActionEvent
Changed text JTextComponent TextEvent
Double-clicked on a list item JList ActionEvent
Selected or deselected an item JList ItemEvent with a single click
(35)11.5 Event-Driven Programming 11.5 Event-Driven Programming
(36)Dialogs Dialogs
Có thể sử dụng lớp JOptionPane để tạo loại
dialog chuẩn:
Message Dialog hiển thị message đợi
người sử dụng kích nút OK để đóng hộp thoại
Confirmation Dialog hiển thị câu hỏi đề nghị
người sử dụng trả lời, vd: OK hay Cancel
Input Dialog hiển thị câu hỏi nhận liệu vào
từ text field, combo box list
Option Dialog hiển thị câu hỏi nhận câu trả lời
(37)Dialogs Dialogs
Tạo các Message Dialog :
Sử dụng phương thức tĩnh lớp JOptionPane
showMessageDialog(Component parentComponent, Object message)
showMessageDialog(Component parentComponent, Object message,String title, int messageType) showMessageDialog(Component parentComponent,
(38)Dialogs Dialogs
Tạo các Message Dialog :
Sử dụng phương thức tĩnh lớp JOptionPane
showMessageDialog(Component parentComponent, Object message)
showMessageDialog(Component parentComponent, Object message,String title, int messageType) showMessageDialog(Component parentComponent,