Bài giảng Nhập môn lập trình Java - Bài 11: Swing - Võ Tấn Dũng
Bạn đang xem 20 trang mẫu của tài liệu "Bài giảng Nhập môn lập trình Java - Bài 11: Swing - Võ Tấn Dũng", để tải tài liệu gốc về máy bạn click vào nút DOWNLOAD ở trên
Tài liệu đính kèm:
- bai_giang_nhap_mon_lap_trinh_java_bai_11_swing_vo_tan_dung.pdf
Nội dung text: Bài giảng Nhập môn lập trình Java - Bài 11: Swing - Võ Tấn Dũng
- TRƯỜNG CAO ĐẲNG CÔNG NGHỆ THÔNG TIN TP.HCM NHẬP MÔN JAVA BÀI 11 SWING GIẢNG VIÊN: VÕ TẤN DŨNG1 (Bài giảng này lấy từ slide của GV Nguyễn Đức Hiển)
- Các thành phần GUI Swing • Gói javax.swing.* • Các thành phần bắt nguồn từ AWT (gói java.awt.*) • Chứa đựng cảm quan (look and feel) • Sự thể hiện và cách người sử dụng tương tác với chương trình • Những thành phần nhẹ (lightweight) • Được viết hoàn toàn bằng Java 2
- Các thành phần GUI Swing • Các thành phần • Chứa phương thức paint() để vẽ thành phần trên màn hình • Các bộ chứa • Tập hợp các thành phần liên quan • Chứa phương thức add() để thêm các thành phần • Lớp JComponent • Cảm quan khả kiến (Pluggable) • Phím tắt (tính dễ nhớ) • Khả năng xử lý sự kiện chung 3
- Các thành phần GUI Swing • Các siêu lớp của nhiều thành phần Swing 4
- Các thành phần GUI cơ bản • JLabel: Hiển thị văn bản hay những biểu tượng. • JTextField: Trường nhập dữ liệu từ bàn phím, cũng có thể hiển thị thông tin. • JButton: Nút nhấn dùng kích họat một sự kiện khi nhấp chuột. • JCheckBox: Hộp kiểm tra cho phép được lựa chọn hay không được lựa chọn. • 5
- Các thành phần GUI cơ bản • JComboBox: Hộp danh mục thả xuống từ đó người sử dụng có thể chọn một bởi việc kích một mục trong danh sách hoặc nhập nội dung vào trong hộp. • JList: Hộp danh sách từ đó người sử dụng có thể chọn bởi việc nhấp vào một mục trong danh sách. Có thể chọn nhiều mục. • JPanel: Một Container trong đó những thành phần có thể được đặt và cách trình bày. 6
- JLabel • Cung cấp văn bản trên GUI • Được định nghĩa với lớp JLabel • Có thể trình bày : • Dòng văn bản chỉ đọc • Hình ảnh • Văn bản và hình ảnh 7
- JLabel – Ví dụ Khai báo JLabel Tạo JLabel 8
- JLabel – Ví dụ 9
- JLabel – Ví dụ 10
- Các JTextField • JTextField • Hộp văn bản trong đó người sử dụng có thể nhập dữ liệu từ bàn phím • JPasswordField • Mở rộng JTextField • Che giấu các ký tự mà người sử dụng nhập vào 11
- Ví dụ sử dụng JTextField 12
- Ví dụ sử dụng JTextField 13
- Ví dụ sử dụng JTextField 14
- Ví dụ - kết quả 15
- JTextArea • Vùng văn bản cho phép thao tác soạn thảo nhiều dòng văn bản. • Thừa kế JTextComponent 16
- Ví dụ sử dụng JTextArea 17
- JButton • Nút nhấn - thành phần người sử dụng nhấp để kích họat một hành động cụ thể. • Một vài kiểu khác nhau • Command Button • Check Box • Radio Button • • Các lớp dẫn xuất javax.swing.AbstractButton • Command Button được tạo với lớp JButton • Sinh ra một ActionEvent khi người sử dụng nhấn trên nút. 18
- Cây thừa kế các JButton 19
- Ví dụ sử dụng JButton 20
- Ví dụ sử dụng JButton 21
- Ví dụ JButton - kết quả 22
- JCheckBox và JRadioButton • Các nút trạng thái • Các giá trị On/Off hoặc true/false • Java cung cấp 3 kiểu: • JToggleButton • JCheckBox • JRadioButton 23
- Ví dụ sử dụng JCheckBox 24
- Ví dụ sử dụng JCheckBox 25
- Ví dụ JCheckBox - kết quả 26
- JComboBox • Hộp danh sách chứa các mục từ đó người sử dụng có thể lựa chọn một mục khi nhấp vào nó. • Còn gọi là hộ danh sách thả xuống 27
- Ví dụ sử dụng JComboBox 28
- Ví dụ sử dụng JComboBox 29
- Ví dụ JComboBox – Kết quả 30
- JList • Danh sách các mục • Người sử dụng có thể chọn một hoặc nhiều mục • Single-selection vs. multiple-selection 31
- Ví dụ sử dụng JList 32
- Ví dụ sử dụng JList 33
- Ví dụ Jlist – Kết quả 34
- Xử lý sự kiện chuột • Các giao tiếp lắng nghe cho các sự kiện chuột • MouseListener • MouseMotionListener • Lắng nghe cho đối tượng sự kiện MouseEvent. 35
- Các phương thức của MouseListener • public void mousePressed( MouseEvent event): Được gọi khi một nút chuột được nhấn trên một thành phần. • public void mouseClicked( MouseEvent event ): Được gọi khi một nút chuột được nhấn và thả ra trên một thành phần. • public void mouseReleased( MouseEvent event): Được gọi khi một nút chuột được thả ra sau khi được nhấn. Trước sự kiện này luôn luôn là một sự kiện mousePressed. • public void mouseEntered(MouseEvent event ): Được gọi khi con trỏ chuột vào những ranh giới của một thành phần. • public void mouseExited(MouseEvent event ): Được gọi khi con trỏ chuột rời ranh giới của một thành phần 36
- MouseMotionListener • public void mouseDragged(MouseEvent event) • Được gọi khi nút chuột được nhấn và di chuyển. • Trước sự kiện này luôn luôn là gọi tới sự kiện mousePressed. • Tất cả các sự kiện kéo đều được gửi tới thành phần mà trên đó sự kéo bắt đầu. • public void mouseMoved(MouseEvent event): • Được gọi khi con chuột được di chuyển trên một thành phần. • Tất cả các sự kiện chuyển động đều được gửi tới thành phần mà vị trí con chuột hiện thời ở đó. 37
- Ví dụ sử dụng sự kiện chuột 38
- Ví dụ sử dụng sự kiện chuột 39
- Ví dụ sử dụng sự kiện chuột 40
- Ví dụ sự kiện chuột - Kết quả 41
- Các lớp Adapter • Hiện thực giao tiếp • Cung cấp sự cài đặt mặc định của mỗi phương thức giao tiếp • Được sử dụng khi tất cả các phương thức trong giao tiếp không cần thiết 42
- Các lớp Adapter • Các lớp Event-Adapter và giao tiếp chúng hiện thực trong gói java.awt.event.* 43
- Ví dụ sử dụng lớp Adapter 44
- Ví dụ sử dụng lớp Adapter 45
- Ví dụ sử dụng lớp Adapter 46
- Xử lý sự kiện phím • Giao tiếp KeyListener • Xử lý những sự kiện phím • Sinh ra khi những phím trên bàn phím được nhấn và thả • Lớp KeyEvent chứa mã phím ảo mà đại diện cho phím 47
- Ví dụ sử dụng sự kiện bàn phím 48
- Ví dụ sử dụng sự kiện bàn phím 49
- Ví dụ sử dụng sự kiện bàn phím 50
- Quản lý bố cục • Cung cấp để sắp xếp các thành phần GUI • Cung cấp những khả năng cách trình bày cơ bản • Xử lý các chi tiết bố cục • Lập trình viên có thể tập trung vào “vẻ ngoài” cơ bản • Giao tiếp LayoutManager 51
- Quản lý bố cục • FlowLayout: Mặc định cho Java.awt.Applet, Java.awt.Panel và javax.swing.JPanel. Đặt các thành phần theo tuần tự (trái qua phải) theo thứ tự khi chúng được thêm. Cũng có thể chỉ rõ thứ tự của các thành phần bởi việc sử dụng phương thức add() Container, với các đối số là một thành phần và một số nguyên chỉ số. • BorderLayout: Mặc định cho khung nội dung của JFrames (và các Window khác) và JApplets. Sắp xếp các thành phần vào trong 5 vùng: Bắc (NORTH), Nam (SOUTH), Đông (EAST), Tây (WEST ) và Trung tâm (CENTER) • GridLayout: Sắp xếp các thành phần vào trong các hàng và các cột. • 52
- FlowLayout • Bộ quản lý bố cục cơ bản nhất • Các thành phần GUI được bố trí trong bộ chứa từ trái qua phải. 53
- Ví dụ sử dụng FlowLayout 54
- Ví dụ FlowLayout – Kết quả 55
- BorderLayout • Sắp xếp các thành phần vào năm vùng • NORTH (đỉnh container) • SOUTH (đáy container) • EAST (bên trái container) • WEST (bên phải container) • CENTER (ở giữa container) 56
- Ví dụ sử dụng BorderLayout 57
- Ví dụ sử dụng BorderLayout 58
- Ví dụ sử dụng BorderLayout 59
- GridLayout • Chia Container thành một lưới gồm các hàng và các cột xác định • Các thành phần được bổ sung bắt đầu tại ô trên-trái • Tiến hành trái-qua-phải cho đến khi hàng đầy 60
- Ví dụ sử dụng GridLayout 61
- Ví dụ sử dụng GridLayout 62
- Ví dụ sử dụng GridLayout 63
- Panel – Khung chứa • Giúp tổ chức các thành phần • Lớp JPanel là lớp xuất của JComponent • Có thể có nhiều thành phần (và các khung chứa panel khác) được thêm vào chúng. 64
- Ví dụ sử dụng JPanel 65
- Ví dụ sử dụng JPanel 66
- Ví dụ sử dụng JPanel 67
- JTabbedPane • Sắp xếp các thành phần trong các lớp • Một lớp xuất hiện tại một thời điểm • Truy cập mỗi lớp thông qua Tab • Lớp JTabbedPane 68
- Ví dụ sử dụng JTabbedPane 69
- Ví dụ sử dụng JTabbedPane 70
- Ví dụ sử dụng JTabbedPane 71
- Con chạy - JSlider • Cho phép người sử dụng chọn giá trị nguyên trong một vùng giá trị xác định. • Một số đặc tính: • Tick marks (major and minor) • Snap-to ticks • Hướng (ngang hoặc đứng) 72
- Ví dụ: OvalPanel.java 73
- Ví dụ: OvalPanel.java 74
- Ví dụ: SliderDemo.java 75
- Ví dụ: SliderDemo.java 76
- Ví dụ: SliderDemo 77
- Sử dụng Menu với JFrame • Cho phép thực hiện các hành động với GUI • Chứa bởi thanh menu (menu bar) • JMenuBar • Bao gồm các mục menu (menu items) • JMenuItem 78
- Ví dụ: MenuDemo.java 79
- JPopupMenu • Context-sensitive popup menus • JPopupMenu • Menu được phát sinh phụ thuộc vào thành phần đang truy cập. • Cách tạo: • JPopupMenu popup = new JPopupMenu(); • JMenuItem items = new JMenuItem(“Red”); • popup.add(items); • • // handling event – mousePressed • popup.show(ev.getComponent(), ev.getX(), ev.getY()); 80
- Ví dụ: PopupDemo.java 81
- Look-and-Feel (cảm quan) • Thay đổi cảm quan (dáng vẻ của giao diện) • Ví dụ, Microsoft Windows look-and-feel đến Motif look-and-feel. • Linh động 82
- Cách sử dụng • private UIManager.LookAndFeelInfo looks[]; • • // get installed look-and-feel information • looks = UIManager.getInstalledLookAndFeels(); • • // change look and feel • UIManager.setLookAndFeel( looks[index].getClassName() ); • SwingUtilities.updateComponentTreeUI( this ); 83
- Ví dụ: LookFeelDemo.java 84
- HẾT BÀI 11 85 GV: Võ Tấn Dũng