Bài giảng Nhập môn lập trình Java - Bài 11: Swing - Võ Tấn Dũng

pdf 85 trang ngocly 3750
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:

  • pdfbai_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

  1. 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)
  2. 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
  3. 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
  4. Các thành phần GUI Swing • Các siêu lớp của nhiều thành phần Swing 4
  5. 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
  6. 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
  7. 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
  8. JLabel – Ví dụ Khai báo JLabel Tạo JLabel 8
  9. JLabel – Ví dụ 9
  10. JLabel – Ví dụ 10
  11. 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
  12. Ví dụ sử dụng JTextField 12
  13. Ví dụ sử dụng JTextField 13
  14. Ví dụ sử dụng JTextField 14
  15. Ví dụ - kết quả 15
  16. 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
  17. Ví dụ sử dụng JTextArea 17
  18. 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
  19. Cây thừa kế các JButton 19
  20. Ví dụ sử dụng JButton 20
  21. Ví dụ sử dụng JButton 21
  22. Ví dụ JButton - kết quả 22
  23. 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
  24. Ví dụ sử dụng JCheckBox 24
  25. Ví dụ sử dụng JCheckBox 25
  26. Ví dụ JCheckBox - kết quả 26
  27. 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
  28. Ví dụ sử dụng JComboBox 28
  29. Ví dụ sử dụng JComboBox 29
  30. Ví dụ JComboBox – Kết quả 30
  31. 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
  32. Ví dụ sử dụng JList 32
  33. Ví dụ sử dụng JList 33
  34. Ví dụ Jlist – Kết quả 34
  35. 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
  36. 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
  37. 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
  38. Ví dụ sử dụng sự kiện chuột 38
  39. Ví dụ sử dụng sự kiện chuột 39
  40. Ví dụ sử dụng sự kiện chuột 40
  41. Ví dụ sự kiện chuột - Kết quả 41
  42. 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
  43. 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
  44. Ví dụ sử dụng lớp Adapter 44
  45. Ví dụ sử dụng lớp Adapter 45
  46. Ví dụ sử dụng lớp Adapter 46
  47. 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
  48. Ví dụ sử dụng sự kiện bàn phím 48
  49. Ví dụ sử dụng sự kiện bàn phím 49
  50. Ví dụ sử dụng sự kiện bàn phím 50
  51. 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
  52. 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
  53. 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
  54. Ví dụ sử dụng FlowLayout 54
  55. Ví dụ FlowLayout – Kết quả 55
  56. 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
  57. Ví dụ sử dụng BorderLayout 57
  58. Ví dụ sử dụng BorderLayout 58
  59. Ví dụ sử dụng BorderLayout 59
  60. 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
  61. Ví dụ sử dụng GridLayout 61
  62. Ví dụ sử dụng GridLayout 62
  63. Ví dụ sử dụng GridLayout 63
  64. 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
  65. Ví dụ sử dụng JPanel 65
  66. Ví dụ sử dụng JPanel 66
  67. Ví dụ sử dụng JPanel 67
  68. 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
  69. Ví dụ sử dụng JTabbedPane 69
  70. Ví dụ sử dụng JTabbedPane 70
  71. Ví dụ sử dụng JTabbedPane 71
  72. 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
  73. Ví dụ: OvalPanel.java 73
  74. Ví dụ: OvalPanel.java 74
  75. Ví dụ: SliderDemo.java 75
  76. Ví dụ: SliderDemo.java 76
  77. Ví dụ: SliderDemo 77
  78. 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
  79. Ví dụ: MenuDemo.java 79
  80. 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
  81. Ví dụ: PopupDemo.java 81
  82. 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
  83. 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
  84. Ví dụ: LookFeelDemo.java 84
  85. HẾT BÀI 11 85 GV: Võ Tấn Dũng