1. Trang chủ
  2. » Công Nghệ Thông Tin

BÀI GIẢNG Lập trình Java (Ngô Công Thắng)

67 209 0

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Định dạng
Số trang 67
Dung lượng 3,19 MB

Nội dung

Chương 1: Giới thiệu Java Lịch sử hình thành phát triển Các đặc điểm Java Các phiên Java Các bước viết chạy thử chương trình Java Các thành phần chương trình Java Cấu trúc chung chương trình Java PHẦN I CƠ BẢN VỀ LẬP TRÌNH JAVA GV Ngô Công Thắng Bộ môn Công nghệ phần mềm Khoa Công nghệ thông tin Bài giảng LT JAVA - Phần 1,Chương GV Ngô Công Thắng Các đặc điểm Java Lịch sử hình thành phát triển l Java ngôn ngữ lập trình hướng đối được ưa chuộng Java ngôn ngữ mạnh ngang tầm với C++ So với C++, Java “mềm dẻo tao nhã” Java công bố vào năm 1990, tác giả James Gosling Sun Microsystems Tên ban đầu Oak (cây sồi) l Java, 20/05/1995, Sun World l HotJava: Trình duyệt Web hỗ trợ Java l l JDK Evolutions l l J2SE, J2ME, and J2EE l l l Bài giảng LT JAVA - Phần 1,Chương GV Ngô Công Thắng l l l l l l l l l Java is simple Java is object-oriented Java is distributed Java is interpreted Java is robust Java is secure Java is architecture-neutral Java is portable Java’s performance Java is multithreaded Java is dynamic đơn giản hướng đối tượng phân tán thông dịch mạnh mẽ bảo mật không phụ thuộc HĐH khả chuyển hiệu cao đa luồng linh động Bài giảng LT JAVA - Phần 1,Chương GV Ngô Công Thắng Các phiên Java l JDK: Java Development Kit l Java l l l JDK Editions l J2SE dùng để phát triển ứng dụng applet độc lập phía client (client-side) JDK 1.02 (1995) JDK 1.1 (1996) l l l l l SDK 1.2 (JDK 1.2, 1998) SDK 1.3 (JDK 1.3, 2000) SDK 1.4 (JDK 1.4, 2002) SDK 5.0 (JDK 1.5, 2004) SDK 6.0 (JDK 1.6, 2007) Bài giảng LT JAVA - Phần 1,Chương GV Ngô Công Thắng Java Enterprise Edition (J2EE) J2EE dùng để phát triển ứng dụng phía server (server-side) Java servlet Java ServerPages Java l Java Standard Edition (J2SE) l Java Micro Edition (J2ME) J2ME sử dụng để phát triển ứng dụng cho thiết bị di động ĐTDĐ l Các chương trình ví dụ môn học Lập trình Java viết J2SE Các bước viết chạy thử chương trình Java Bài giảng LT JAVA - Phần 1,Chương GV Ngô Công Thắng Quá trình tạo chạy chương trình java Tạo/Sửa Source Code Soạn thảo chương trình trình soạn thảo text IDE l Biên dịch chương trình l Chạy chương trình l Source Code Compile Source Code vd: javac Welcome.java Nếu có lỗi Bytecode bytecode Run Bytecode vd: java Welcome Kết Bài giảng LT JAVA - Phần 1,Chương GV Ngô Công Thắng Nếu có lỗi kết Bài sai giảng LT JAVA - Phần 1,Chương GV Ngô Công Thắng Tạo, biên dịch, chạy chương trình DOS Một chương trình Java đơn giản // Chuong trinh dua dong chu Welcome to Java! package ch01; public class Welcome { public static void main(String[] args) { System.out.println("Welcome to Java!"); } } l l l l l l l l l Thiết lập biến môi trường l Trên cửa sổ DOS cd\ ¿ cd javapro ¿ javac Welcome.java ¿ Chạy: l Soạn thảo chương trình (Notepad, Wordpad…) Ghi tệp với tên có đuôi java Ví dụ: Ghi tệp Welcome.java vào thư mục C:\javapro Biên dịch: l Chú ý: Đặt tên tệp phải trùng với tên lớp, gõ lệnh biên dịch từ DOS tên tệp phải giống hệt tên lớp (cả hoa thường) Bài giảng LT JAVA - Phần 1,Chương GV Ngô Công Thắng Soạn thảo chương trình: java Welcome ¿ Bài giảng LT JAVA - Phần 1,Chương GV Ngô Công Thắng 10 Thiết lập biến môi trường Để biên dịch chạy chương trình Java từ thư mục DOS ta phải thiết lập biến môi trường PATH sau: Kích phải chuột vào My Computer -> Properties -> Advanced -> Environment Variables l Chọn biến Path -> Edit -> Gõ thêm đường dẫn tới thư mục Bin JDK Ví dụ: C:\Program Files\Java\jdk1.6.0_02\bin l Bài giảng LT JAVA - Phần 1,Chương GV Ngô Công Thắng 11 Bài giảng LT JAVA - Phần 1,Chương GV Ngô Công Thắng 12 Các thành phần chương trình Java Thiết lập biến môi trường l l l l l l l l Bài giảng LT JAVA - Phần 1,Chương GV Ngô Công Thắng Comments (Chú giải, C++) Reserved words (Từ khóa) Modifiers (Như C++, ví dụ: public, private, static) Statements (Câu lệnh, C++) Blocks (Khối lệnh, C++) Classes (Lớp, C++) Methods (Phương thức, hàm thành viên C++) main method (Phương thức chính, hàm main() C++) 13 Bài giảng LT JAVA - Phần 1,Chương GV Ngô Công Thắng Cấu trúc chung chương trình Java main Method main method đóng vai trò chương trình l Mọi chương trình Java phải có main method, điểm khởi đầu thực chương trình l Dạng thức main method: l public static void main(String[ ] args) { // Statements; } Bài giảng LT JAVA - Phần 1,Chương GV Ngô Công Thắng 14 l l l Trình thông dịch Java coi chương trình Java lớp Mọi chương trình Java phải có lớp chứa phương thức main Tên lớp chứa phương thức main phải trùng với tên tệp chương trình Cấu trúc chung chương trình Java: import Thư viện lớp (package);//#include C++ public class TenLop //Ten lop la ten tep ctrinh { public static void main(String[] args) { //Các lệnh chương trình Java để } //Dinh nghia cac phuong thuc khac } 15 Bài giảng LT JAVA - Phần 1,Chương GV Ngô Công Thắng 16 Cấu trúc chung chương trình Java l Ví dụ Ví dụ: Import javax.swing.JOptionPane; public class Welcome { Trong ví dụ ta sử dụng phương thức showMessageDialog lớp JOptionPane để hiển thị thông báo hộp hội thoại l JOptionPane nhiều lớp có sẵn hệ thống Java để tái sử dụng l public static void main(String[] args) { //Hien thi chu Welcome to Java! Trong hop thoai JOptionPane.showMessageDialog(null,”Welcome to Java!”,”Chuong trinh vi du”,JOptionPane.INFORMATION_MESSAGE); } } Bài giảng LT JAVA - Phần 1,Chương GV Ngô Công Thắng 17 Phương thức showMessageDialog JOptionPane.showMessageDialog(null, "Welcome to Java!", "Example 1.2 Output", JOptionPane.INFORMATION_MESSAGE); Bài giảng LT JAVA - Phần 1,Chương GV Ngô Công Thắng 19 Bài giảng LT JAVA - Phần 1,Chương GV Ngô Công Thắng 18 Chương Các kiểu liệu Chương Các kiểu liệu I Các kiểu liệu II Khai báo biến III Biểu thức IV Chuyển đổi kiểu liệu V Vào/Ra liệu với Java I Các kiểu liệu Các kiểu liệu số Kiểu ký tự Kiểu logic Kiểu xâu ký tự Bài giảng LT JAVA - Phần 1,Chương GV Ngô Công Thắng Bài giảng LT JAVA - Phần 1,Chương GV Ngô Công Thắng I.1 Các kiểu liệu số l l l l l l byte short int long float double 8 I.1 Các kiểu liệu số byte byte byte byte byte byte l Các phép toán số học giống C++: +, -, *, /, % Hằng số nguyên viết bình thường l Hằng số thực viết theo dạng: l Dạng thập phân: 2.25 l Dạng mũ: 2.5E3 l Giống kiểu liệu số C++ Bài giảng LT JAVA - Phần 1,Chương GV Ngô Công Thắng Bài giảng LT JAVA - Phần 1,Chương GV Ngô Công Thắng I.2 Kiểu ký tự l l l l l I.2 Kiểu ký tự Giống C++, định nghĩa với từ khóa char Kiểu char có kích thước byte Một biến char chứa ký tự ASCII ký tự Unicode Kiểu char dùng kiểu số Hằng ký tự ký tự đặt dấu phẩy Ví dụ: ‘A’ Hằng xâu ký tự dãy ký tự đặt hai dấu nháy kép Ví dụ: “DHNN1” Bài giảng LT JAVA - Phần 1,Chương GV Ngô Công Thắng Các ký tự điều khiển: Description Escape Sequence Backspace ‘\b’ Tab ‘\t’ Linefeed ‘\n’ Carriage return ‘\r’ Backslash ‘\\’ Single Quote ‘\’’ Double Quote ‘\”’ l Bài giảng LT JAVA - Phần 1,Chương GV Ngô Công Thắng I.3 Kiểu logic (boolean) I.4 Kiểu xâu ký tự Khác với C++, Java đưa thêm vào kiểu logic định nghĩa với tên chuẩn boolean, có giá trị true false l Hằng boolean viết true false l Các phép toán logic quan hệ giống C++ l l l Khác với C++, Java đưa vào kiểu liệu xâu ký tự Kiểu xâu ký tự định nghĩa với tên chuẩn String Thực kiểu xâu ký tự lớp đối tượng xâu có sẵn Java Khi khai báo biến xâu ký tự khởi tạo xâu ký tự String st = “DHNN1”; l Bài giảng LT JAVA - Phần 1,Chương GV Ngô Công Thắng Unicode \u0008 \u0009 \u000a \u000d \u005C \u0027 \u0022 Có thể dùng phép toán + += để ghép nhiều xâu ký tự, ghép xâu ký tự với liệu xâu ký tự (dữ liệu số) Bài giảng LT JAVA - Phần 1,Chương GV Ngô Công Thắng Ví dụ ghép xâu ký tự II Khai báo biến String message = "Welcome "+"to " + "Java"; String s = "Chuong" + 2; // Chuong2 String s1 = "Hello" + 'B'; // s1 trở thành HelloB Bài giảng LT JAVA - Phần 1,Chương GV Ngô Công Thắng l int a=100; l Khai báo đặt tên cho giá trị cụ thể Cú pháp khai báo sau: final TenKieu TenHang = GiaTri; Ví dụ: final double PI=3.14159; Bài giảng LT JAVA - Phần 1,Chương GV Ngô Công Thắng III Biểu thức 10 IV Chuyển đổi kiểu liệu Biểu thức Java giống C++ l Lệnh gán biểu thức gán giống C++ l Thứ tự ưu tiên thứ tự thực phép toán biểu thức giống C++ Java có khả chuyển đổi kiểu tự động, quy tắc chuyển đổi kiểu tự động giống C++ l Có thể ép kiểu, cú pháp ép kiểu C++ l Bài giảng LT JAVA - Phần 1,Chương GV Ngô Công Thắng Khai báo biến khởi tạo giá trị ban đầu cho biến giống C++ Ví dụ: l 11 Bài giảng LT JAVA - Phần 1,Chương GV Ngô Công Thắng 12 V Vào/Ra liệu với Java V.1 Lấy liệu vào từ bàn phím Để lấy liệu vào từ bàn phím ta dùng phương thức showInputDialog() lớp JOptionPane, phương thức cho phép ta nhập liệu qua hộp thoại l Dữ liệu nhận từ hội thoại xâu ký tự => dùng biến xâu để chứa liệu nhập vào, sau chuyển xâu ký tự thành kiểu liệu muốn nhập l Cách nhập sau: Lấy liệu vào từ bàn phím Đưa liệu hình Ví dụ: Bài giảng LT JAVA - Phần 1,Chương GV Ngô Công Thắng l 13 Bài giảng LT JAVA - Phần 1,Chương GV Ngô Công Thắng V.1 Lấy liệu vào từ bàn phím 14 V.1 Lấy liệu vào từ bàn phím String st = JOptionPane.showInputDialog( null, “Prompt Message”, “Dialog Title”, JOptionPane.QUESTION_MESSAGE); Để chuyển xâu ký tự biểu diễn số thành giá trị số nguyên ta dùng phương thức parseInt lớp Integer int intV = Integer.parseInt(intString); l Để chuyển xâu ký tự biểu diễn số thành giá trị số thực ta dùng phương thức parseDouble lớp Double l double doubleV = Double.parseDouble(doubleString); Bài giảng LT JAVA - Phần 1,Chương GV Ngô Công Thắng 15 Bài giảng LT JAVA - Phần 1,Chương GV Ngô Công Thắng 16 V.2 Đưa liệu hình V.2 Đưa liệu hình Để đưa liệu hình ta dùng phương thức showMessageDialog() lớp JOptionPane, phương thức cho phép ta đưa liệu qua hộp thoại l Khi đưa liệu hội thoại ta dùng phép + += để nối xâu ký tự các giá trị kiểu liệu l Các dùng: l Bài giảng LT JAVA - Phần 1,Chương GV Ngô Công Thắng JOptionPane.showMessageDialog(null, "Welcome to Java!", "Example 1.2 Output", JOptionPane.INFORMATION_MESSAGE); 17 Bài giảng LT JAVA - Phần 1,Chương GV Ngô Công Thắng V.2 Đưa liệu hình l l 18 V.2 Đưa liệu hình Để định dạng liệu đưa hình ta dùng phương thức format() lớp String, phương thức định dạng liệu thành xâu ký tự trả xâu ký tự định dạng %b logic false %c Ký tự ‘a’ String st = String.format ( Hằng xâu chứa tác tử định dạng, Các liệu ); %d Số nguyên 200 %f Số thực 2.45 %e Số thực dạng mũ 2.450E+2 %s Xâu ký tự “Ha Noi” Tác tử định dạng Các tác tử định dạng bắt đầu dấu % theo sau chữ biểu thị loại liệu định dạng Ví dụ: %b định dạng giá trị logic thành false true, %d định dạng số nguyên,… Bài giảng LT JAVA - Phần 1,Chương GV Ngô Công Thắng 19 Loại liệu định dạng Bài giảng LT JAVA - Phần 1,Chương GV Ngô Công Thắng Ví dụ 20 JComponent Sơ đồ phần cấp lớp GUI (Swing) JCheckBoxMenuItem Dimension Font Classes in the java.awt package LayoutManager Heavyweight AbstractButton JMenuItem JMenu JButton JRadioButtonMenuItem JToggleButton JCheckBox FontMetrics JRadioButton JEditorPane JComponent Object Color Panel Applet JApplet JTextField JTextComponent Graphics Component JPasswordField J TextArea Container Window Frame JFrame Dialog JDialog JLabel * Swing Components in the javax.swing package JComponent Lightweight Bà i giả giả ng Lậ Lậ p trì trình Java - Chương 09 JComboBox JMenuBar JPanel JOptionPane JScrollBar JScrollPane JFileChooser JPopupMenu JSeparator JSlider JRootPane JPane JProgressBar JToolBar JSplitPane JTable JTree JInternalFrame JToolTip JLayeredPane JTableHeader JColorChooser 9.5 Các lớp GUI: nhóm container Bà i giả giả ng Lậ Lậ p trì trình Java - Chương 09 9.6 Các lớp GUI: nhóm component Được dùng để chứa thành phần khác l Các lớp container (Swing): l l l Gồm subclass lớp JComponent JComponent Các lớp GUI component (Swing): l l Container l l JFrame l l l JDialog l l JApplet l l l JPanel l l Bà i giả giả ng Lậ Lậ p trì trình Java - Chương 09 JList JTabbedPane 9.7 JButton JLabel JTextField JTextArea JComboBox JList JRadioButton JMenu … Bà i giả giả ng Lậ Lậ p trì trình Java - Chương 09 9.8 AWT (Optional) Các lớp GUI: nhóm helper AWTEvent Được component container dùng để vẽ đặt đối tượng l Các lớp helper (Swing): Font l FontMetrics Object Color Graphics l Graphics Component l Color Container Panel Applet Button Window Frame Label Dialog FileDialog TextComponent List TextArea Choice CheckBox l Font Layo utManager CheckBoxGroup l FontMetrics Canvas l Dimension MenuComponent l LayoutManager Scrollbar Bà i giả giả ng Lậ Lậ p trì trình Java - Chương 09 9.9 Pull-down Menus Applet Panel User Interface Components (UI) Panel Panel Panel UI UI UI Menu MenuBar 9.10 Frames Frame cửa sổ không chứa cửa sổ khác l Frame tảng để chứa thành phần GUI khác ứng dụng Java GUI l Trong chương trình Swing GUI, sử dụng lớp JFrame để tạo cửa sổ l Pull-down Menus Panel Panel User Interface Components User Interface Components Panel Panel User Interface Components User Interface Components Panel MenuItem Bà i giả giả ng Lậ Lậ p trì trình Java - Chương 09 Các thành phần giao diện người sử dụng Frame TextField panel Bà i giả giả ng Lậ Lậ p trì trình Java - Chương 09 9.11 Bà i giả giả ng Lậ Lậ p trì trình Java - Chương 09 9.12 Tạo Frame Căn Frame 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); } } MyFrame Bà i giả giả ng Lậ Lậ p trì trình Java - Chương 09 Mặc định, frame hiển thị góc bên trái hình l Để hiển thị frame vị trí xác định, sử dụng phương thức setLocation(x, y) lớp JFrame l Phương thức đặt góc trái frame vị trí có tọa độ (x, y) l 9.13 Bà i giả giả ng Lậ Lậ p trì trình Java - Chương 09 9.14 Đưa thành phần vào Frame Căn Frame (tiếp) (0, 0) // Dua nut bam vao frame frame.getContentPane().add( new JButton("OK")); Screen (x, y) Frame getHeight() screenHeight getWidth() MyFrameWithComponents screenWidth CenterFrame Bà i giả giả ng Lậ Lậ p trì trình Java - Chương 09 9.15 Bà i giả giả ng Lậ Lậ p trì trình Java - Chương 09 9.16 Layout Managers LƯU Ý l l Content pane lớp Container Câu lệnh slide trước tương đương với câu lệnh sau: chế để tự động ánh xạ thành phần GUI bạn tất hệ thống cửa Container container = frame.getContentPane(); frame.getContentPane(); container.add(new JButton("OK")); JButton("OK")); l Content pane đượ sinh đối tượng JFrame tạo Đối tượng JFrame sử dụng content pane để chứa thành phần frame Bà i giả giả ng Lậ Lậ p trì trình Java - Chương 09 sổ l Các thành phần GUI đặt container Mỗi container có layout manager để xếp thành phần 9.17 Thiết lập Layout Manager Bà i giả giả ng Lậ Lậ p trì trình Java - Chương 09 9.18 Ví dụ 9.1: FlowLayout Manager LayoutManager layMan = new XLayout(); Layout(); container.setLayout(layMan); container.setLayout(layMan); l Các layout manager Java cung cấp Các thành phần xếp container từ trái sang phải, từ XLayout: l FlowLayout xuố xuống dướ theo l GridLayout thứ thứ tự chúng đượ đưa l BorderLayout vào CardLayout l GridBagLayout l Bà i giả giả ng Lậ Lậ p trì trình Java - Chương 09 ShowFlowLayout 9.19 Bà i giả giả ng Lậ Lậ p trì trình Java - Chương 09 9.20 FlowLayout Constructors l Ví dụ 9.2: GridLayout Manager public FlowLayout(int align, int hGap, hGap, int vGap) vGap) GridLayout manager xếp thành Xây dựng FlowLayout có cách hàng (alignment), khoả khoảng trố trống ngang (horizontal gap), khoả khoảng trố ố ng d ọ c (vertical gap) x c đ ị nh C c khoả ả ng trố ố ng giữ tr nh kho tr thành phầ phần đượ tính pixel l phầ phần lướ lưới (ma trậ trận) với số hàng số cột xác định constructor Các thành phầ phần đượ đặt lướ lưới từ public FlowLayout(int alignment) Xây dựng FlowLayout có alignment xác định, nh, khoả khoảng trố trống ngang dọc có mặc định pixel l xuố xuống dướ dưới, từ trá trái sang phả phải public FlowLayout() FlowLayout() Xây dựng FlowLayout có cách hàng mặc định giữ khoả khoảng trố trống ngang dọc mặc định pixel ShowGridLayout GridLayout Constructors Ví dụ 9.3: BorderLayout Manager Bà i giả giả ng Lậ Lậ p trì trình Java - Chương 09 l 9.21 9.22 BorderLayout manager chia container public GridLayout(int rows,int columns) l Xây dựng GridLayout có số hàng thành khu vực: East, South, West, North, Center số cột xác định l Bà i giả giả ng Lậ Lậ p trì trình Java - Chương 09 public GridLayout(int rows, int columns, int hGap, hGap, int vGap) vGap) Xây dựng GridLayout có số hàng số cột xác định, nh, khoả khoảng trố trống ngang dọc giữ thành phầ phần đượ xác định nh Bà i giả giả ng Lậ Lậ p trì trình Java - Chương 09 9.23 Bà i giả giả ng Lậ Lậ p trì trình Java - Chương 09 9.24 Sử dụng Panel làm Container Ví dụ 9.3 (tiếp) Các thành phầ phần đượ đưa vào BorderLayout phương thức add: l l để nhó nhóm thành phầ phần GUI add(Component, add(Component, constraint) l l constraint: l BorderLayout.EAST, BorderLayout.EAST, l BorderLayout.SOUTH, BorderLayout.SOUTH, l BorderLayout.WEST, BorderLayout.WEST, l BorderLayout.NORTH, BorderLayout.NORTH, l BorderLayout.CENTER BorderLayout.CENTER Bạn nên đặt thành phầ phần GUI panel đặt panel frame, ShowBorderLayout Bà i giả giả ng Lậ Lậ p trì trình Java - Chương 09 Các panel đóng vai trò container nhỏ thể đặt panel panel JPanel p = new JPanel(); JPanel(); p.add(new JButton("OK"); JButton("OK"); frame.getContentPanel().add(p); frame.getContentPanel().add(p); 9.25 Bà i giả giả ng Lậ Lậ p trì trình Java - Chương 09 Vẽ Panel Ví dụ 9.4: Panel Chương trình tạo giao diện cho lò vi sóng, ng, sử dụng panel để tổ chức thành phần l JPanel thể đượ sử dụng để vẽ đồ họa, văn cho phé phép tương tác với ngườ người sử dụng ng frame l A textfield Để vẽ panel: p2 A button 12 buttons p1 l Tạo lớp subclass JPanel l Chồ Chồng phương thứ thức paintComponent paintComponent l Sau thể hiể hiển thị thị chuỗ chuỗi ký tự, vẽ khố khối hình học hiể hiển thị thị ảnh panel TestPanels Bà i giả giả ng Lậ Lậ p trì trình Java - Chương 09 9.26 9.27 Bà i giả giả ng Lậ Lậ p trì trình Java - Chương 09 9.28 Vẽ Panel (tiếp) Vẽ Panel (tiếp) public class DrawMessage extends JPanel { /** Main method */ public static void main(String[] args) { JFrame frame = new JFrame("DrawMessage"); frame.getContentPane().add(new DrawMessage()); (0, 0) x (x, 0) y frame.setDefaultCloseOperation(JFrame.EXIT_ON_CL OSE); frame.setSize(300, 200); frame.setVisible(true); } (0, y) /** Paint the message */ public void paintComponent(Graphics g) { DrawMessage9.29 super.paintComponent(g); Bà i giả giả ng Lậ Lậ p trì trình Java - Chương 09 g.drawString("Welcome to Java!", 40, 40); LƯU Ý l Bà i giả giả ng Lậ Lậ p trì trình Java - Chương 09 Lớp Graphics lớp trừ trừu tượ tượng để hiể hiển thị thị Lớp Graphics gói gọn chi tiế tiết platform cho Để vẽ hình, thông thường bạn tạo lớp JPanel chồng phương thức paintComponent để "nói" cho hệ thống phải phé phép bạn vẽ thứ thứ theo cách giố giống không vẽ Thực tế bạn vẽ liên quan đến platform cụ thể thứ thành phần GUI l 9.30 LƯU Ý hình vẽ ảnh hình platform khác l (x, y) Lời gọi super.paintComponent(g) cần thiết để đảm bảo vùng hiể hiển thị thị đượ xóa trướ trước Bà i giả giả ng Lậ Lậ p trì trình Java - Chương 09 hiể hiển thị thị vẽ 9.31 Bà i giả giả ng Lậ Lậ p trì trình Java - Chương 09 9.32 Lớp Color Thiết lập màu Bạn thể thiế thiết lập màu cho thành phầ phần GUI cách sử dung lớp java.awt.Color java.awt.Color Các màu đượ tạo từ màu red, green, blue; màu đượ biể biểu diễ diễn giá giá trị trị byte (0(0-255) miêu tả cườ cường độ Đây đượ gọi hệ màu RGB (RGB (RGB model) model) Color c = new Color(r, g, b); Bạn thể sử dụng phương thứ thức sau để thiết lập màu background foreground thành phầ phần: l r, g, b xác định màu đượ tạo thành phầ phần tương ứng red, green, blue l setBackground(Color c) setForeground(Color c) Ví dụ: Ví dụ: Color c = new Color(228, 100, 255); JButton jbtOK = new JButton(); jbtOK.setBackground(Color.yellow); jbtOK.setBackground(Color.yellow); jbtOK.setForeground(new Color(255,0,0)); Lớp Font Tìm tất tên Font khả dụng Bà i giả giả ng Lậ Lậ p trì trình Java - Chương 09 9.33 Font myFont = Font(name, style, size); Bà i giả giả ng Lậ Lậ p trì trình Java - Chương 09 9.34 import java.awt.GraphicsEnvironment; java.awt.GraphicsEnvironment; public class testAllFonts { Ví dụ: public static void main(String[] main(String[] args) args) { Font font1 = new Font("SansSerif", Font("SansSerif", Font.BOLD, 16); Font font2 = new Font("Serif", Font("Serif", Font.BOLD+Font.ITALIC, Font.BOLD+Font.ITALIC, 12); GraphicsEnvironment e = GraphicsEnvironment.getLocalGraphicsEnviron ment(); ment(); String[] fontnames = e.getAvailableFontFamilyNames(); e.getAvailableFontFamilyNames(); Bà i giả giả ng Lậ Lậ p trì trình Java - Chương 09 9.35 for (int (int i = 0; i < fontnames.length; fontnames.length; testAllFonts i++) Bà i giả giả ng Lậ Lậ p trì trình Java - Chương 09 System.out.println(fontnames[i]); System.out.println(fontnames[i]); 9.36 Lớp FontMetrics Thiết lập Font public void paint(Graphics g) { l Font myFont = new Font("Times", Font.BOLD, 18); Bạn thể hiể hiển thị thị chuỗ chuỗi ký tự vị trí trí panel cách sử dụng lớp g.setFont(myFont); g.setFont(myFont); FontMetrics FontMetrics g.drawString("Welcome to Java", 20, 40); l //set a new font Để nhậ nhận đối tượ tượng FontMetrics cho font xác định, sử dụng phương thức getFontMetrics: g.setFont(new Font("Courier",Font.BOLD+Font.ITALIC,16)); g.drawString("Welcome to Java", 20, 70); public void paint(Graphics g) { } g.getFontMetrics(Font f); // testSetFonts Bà i giả giả ng Lậ Lậ p trì trình Java - Chương 09 g.getFontMetrics(); g.getFontMetrics(); 9.37 } public int getAscent() getAscent() l public int getDescent() getDescent() l public int getLeading() getLeading() l public int getHeight() getHeight() l public int stringWidth(String str) str) Bà i giả giả ng Lậ Lậ p trì trình Java - Chương 09 9.38 Ví dụ 9.5: Sử dụng FontMetrics Các phương thức lấy thuộc tính chuỗi lớp FontMetrics l Bà i giả giả ng Lậ Lậ p trì trình Java - Chương 09 l Mục tiêu: Hiển thị “Welcome to Java” frame CenterMessage 9.39 Bà i giả giả ng Lậ Lậ p trì trình Java - Chương 09 9.40 Ví dụ 9.5 (tiếp) messagePanel JPanel JFrame MessagePanel stringWidth getHeight() stringAscent Welcome to Java +getMessage(): String +getXCoordinate(): int +getYCoordinate(): int +isCentered(): boolean +setMessage(message: String): void +setXCoordinate(x: int): void +setYCoordinate(y: int): void +setCentered(centered: boolean): void +paintComponent(g: Graphics): void +getPerferredSize(): Dimension +getMinimumSize(): Dimension 9.41 Vẽ hình hình học Panel l Vẽ đường thẳng l Vẽ hình chữ nhật TestFontMetrics -xCoordinate: int -yCoordinate: int -centered: boolean -message: String getWidth() Bà i giả giả ng Lậ Lậ p trì trình Java - Chương 09 Bà i giả giả ng Lậ Lậ p trì trình Java - Chương 09 9.42 Vẽ đường thẳng drawLine(x1, y1, x2, y2); (x1 , y1) l Vẽ hình bầu dục l Vẽ cung tròn l Vẽ đa giá giác (x2 , y2) Bà i giả giả ng Lậ Lậ p trì trình Java - Chương 09 9.43 Bà i giả giả ng Lậ Lậ p trì trình Java - Chương 09 9.44 Vẽ hình chữ nhật Vẽ hình chữ nhật góc tròn l drawRect(x, y, w, h); l drawRoundRect(x, drawRoundRect(x, y, w, h, aw, ah); l fillRect(x, y, w, h); l fillRoundRect(x, y, w, h, aw, ah); (x , y ) (x, y) ah/2 h DrawRectangles a w /2 h w w Bà i giả giả ng Lậ Lậ p trì trình Java - Chương 09 9.45 Bà i giả giả ng Lậ Lậ p trì trình Java - Chương 09 Vẽ hình bầu dục 9.46 Vẽ cung tròn l drawOval(x, y, w, h); l l fillOval(x, y, w, h); l drawArc(x, drawArc(x, y, w, h, angle1, angle2); fillArc(x, fillArc(x, y, w, h, angle1, angle2); (x, y) DrawOvals DrawArgs h w Bà i giả giả ng Lậ Lậ p trì trình Java - Chương 09 9.47 Bà i giả giả ng Lậ Lậ p trì trình Java - Chương 09 9.48 Vẽ đa giác Ví dụ 9.6: Vẽ đồng hồ int[] int[] x = {40, 70, 60, 45, 20}; int[] int[] y = {20, 40, 80, 45, 60}; g.drawPolygon(x, g.drawPolygon(x, y, x.length); g.fillPolygon(x, g.fillPolygon(x, y, x.length); (x[0], y[0]) (x[1], y[1]) l Mục tiêu: Sử dụng phương thức vẽ lượng giác để vẽ đồng hồ hiển thị giờ, phút, giây frame DrawClock DrawPolygon (x[3], y[3]) DisplayClock (x[4], y[4]) Run (x[2], y[2]) Bà i giả giả ng Lậ Lậ p trì trình Java - Chương 09 9.49 Bà i giả giả ng Lậ Lậ p trì trình Java - Chương 09 Ví dụ 9.6 (tiếp) 9.50 Ví dụ 9.6 (tiếp) xEnd = xCenter + handLength ´ sin(q) xEnd = xCenter + handLength ´ sin(q) yEnd = yCenter - handLength ´ Vì phútcos(q) có 60 giây, góc yEnd = yCenter - handLength ´ cos(q) Vị trí kim phút xác định kim giây là: phút giây theo công thức second ´ (2p/60) minute + second/60 Ví dụ, thời gian phút 30 giây Tổng số phút 3.5 Vì có 60 phút, góc kim phút là: (minute + second/60) ´ (2p/60) Bà i giả giả ng Lậ Lậ p trì trình Java - Chương 09 9.51 Bà i giả giả ng Lậ Lậ p trì trình Java - Chương 09 9.52 Lập trình hướng kiện Ví dụ 9.6 (tiếp) xEnd = xCenter + handLength ´ sin(q) l Lập trình hướng thủ tục (Procedural programming) chương trì trình đượ thự thực hiệ theo thứ thứ tự thủ thủ tục l Trong lập trình hướng kiện (eventdriven programming), programming), mã lệnh đượ thực vào lúc kích hoạt kiện yEnd = yCenter - handLength ´ cos(q) Vì hình tròn chia thành 12 giờ, góc kim là: (hour + minute/60 + second/(60 ´ 60))) ´ (2p/12) Bà i giả giả ng Lậ Lậ p trì trình Java - Chương 09 9.53 Bà i giả giả ng Lậ Lậ p trì trình Java - Chương 09 Các lớp kiện Sự kiện l Một kiện (event) định nghĩa loạ loại tín hiệ hiệu báo cho chương trì trình có EventObject điều xảy l Sự kiệ kiện đượ sinh hành động người sử dụng (ví dụ: di chuột, kích phím AWTEvent ActionEvent ContainerEvent AdjustmentEvent FocusEvent ComponentEvent InputEvent ItemEvent PaintEvent TextEvent WindowEvent MouseEvent KeyEvent ListSelectionEvent Các lớp kiện nằm gói java.awt.event chuộ chuột, ấn phí phím) hoặ HĐH (vd: vd: timer) Bà i giả giả ng Lậ Lậ p trì trình Java - Chương 09 9.54 riêng ListSelectionEvent gói javax.swing.event 9.55 Bà i giả giả ng Lậ Lậ p trì trình Java - Chương 09 9.56 Selected User Actions User Action Source Object Event Type 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 Mô hình ủy quyền EventObject User action Generate an event Trigger an event Source Object with a single click Register a listener object Selected or deselected an item JComboBox Notify listener Listener Object Event Handler ItemEvent Bà i giả giả ng Lậ Lậ p trì trình Java - Chương 09 9.57 Bà i giả giả ng Lậ Lậ p trì trình Java - Chương 09 Ví dụ 9.7: Xử lý kiện hành động đơn giản Selected Event Handlers Event Class Listener Interface Listener Methods (Handlers) ActionEvent ActionListener actionPerformed(ActionEvent) ItemEvent ItemListener itemStateChanged(ItemEvent) WindowEvent WindowListener windowClosing(WindowEvent) 9.58 l Mục tiêu: Hiển thị nút bấm OK Cancel cửa sổ Khi kích chuộ chuột vào nút, windowOpened(WindowEvent) windowIconified(WindowEvent) windowDeiconified(WindowEvent) message hiển thị để nút đượ kích ch windowClosed(WindowEvent) windowActivated(WindowEvent) windowDeactivated(WindowEvent) ContainerEvent ContainerListener componentAdded(ContainerEvent) TestActionEvent componentRemoved(ContainerEvent) Bà i giả giả ng Lậ Lậ p trì trình Java - Chương 09 9.59 Bà i giả giả ng Lậ Lậ p trì trình Java - Chương 09 9.60 Ví dụ 9.9: Nhiều Listener cho nguồn đơn Ví dụ 9.8: Xử lý kiện cửa sổ F Mục tiêu: Minh họa việc xử lý kiện cửa sổ Bất kỳ lớp lớp Window tạo F Mục tiêu: Sửa đổi ví dụ 9.7 để thêm vào nút kiện cửa sổ sau: mở, đóng, đóng, bấm listener Hai nút OK Cancel sử kích hoạt, kích hoạt, thu nhỏ thành dụng lớp frame listner Khi nút bấm, biểu tượng, phóng to trở lại cửa sổ Chương trình tạo frame, lắng nghe kiện cửa sổ, listener đáp ứng lại kiện hành động hiển thị thông báo kiện xuất TestMultipleListener TestWindowEvent Bà i giả giả ng Lậ Lậ p trì trình Java - Chương 09 9.61 Bà i giả giả ng Lậ Lậ p trì trình Java - Chương 09 9.62 ... C:Program Files Java jdk1.6.0_02in l Bài giảng LT JAVA - Phần 1,Chương GV Ngô Công Thắng 11 Bài giảng LT JAVA - Phần 1,Chương GV Ngô Công Thắng 12 Các thành phần chương trình Java Thiết lập biến môi... 1,Chương GV Ngô Công Thắng Soạn thảo chương trình: java Welcome ¿ Bài giảng LT JAVA - Phần 1,Chương GV Ngô Công Thắng 10 Thiết lập biến môi trường Để biên dịch chạy chương trình Java từ thư mục... 2007) Bài giảng LT JAVA - Phần 1,Chương GV Ngô Công Thắng Java Enterprise Edition (J2EE) J2EE dùng để phát triển ứng dụng phía server (server-side) Java servlet Java ServerPages Java l Java Standard

Ngày đăng: 20/08/2017, 14:45

TỪ KHÓA LIÊN QUAN

w