Bài giảng Lập trình Java cơ bản - Bài 3: Lập trình GUI (Applet) - Cao Đức Thông
• Giới thiệu các loại ứng dụng
• Thư viện AWT
• Tạo các applet
• Đối tượng đồ hoạ Graphics
• Kĩ thuật khung hình phụ
• Bài tập
Hai loại ứng dụng Java
3
• Applet
• Chương trình Java chạy trong một trang
web nhờ vào trình duyệt hỗ trợ Java.
• Stand-alone Application
• Giao diện dòng lệnh (console): Tương tác
với người dùng thông qua các dòng ký tự.
• Giao diện đồ hoạ (GUI): Tương tác với
người dùng bằng nhiều cách khác nhau
như hình ảnh, nút nhấn, biểu tượng… Việc
xử lý ứng dụng dựa trên các sự kiện
• Thư viện AWT
• Tạo các applet
• Đối tượng đồ hoạ Graphics
• Kĩ thuật khung hình phụ
• Bài tập
Hai loại ứng dụng Java
3
• Applet
• Chương trình Java chạy trong một trang
web nhờ vào trình duyệt hỗ trợ Java.
• Stand-alone Application
• Giao diện dòng lệnh (console): Tương tác
với người dùng thông qua các dòng ký tự.
• Giao diện đồ hoạ (GUI): Tương tác với
người dùng bằng nhiều cách khác nhau
như hình ảnh, nút nhấn, biểu tượng… Việc
xử lý ứng dụng dựa trên các sự kiện
Bạn đang xem 20 trang mẫu của tài liệu "Bài giảng Lập trình Java cơ bản - Bài 3: Lập trình GUI (Applet) - Cao Đức Thông", để tải tài liệu gốc về máy hãy click vào nút Download ở trên.
File đính kèm:
- bai_giang_lap_trinh_java_co_ban_bai_3_lap_trinh_gui_applet_c.pdf
Nội dung text: Bài giảng Lập trình Java cơ bản - Bài 3: Lập trình GUI (Applet) - Cao Đức Thông
- Khung củamộtappletcơ bản import java.applet.Applet; import java.awt.Graphics; public class TestApplet extends Applet { public void init() { } public void start() { } public void stop() { } public void destroy { } public void paint( Graphics g) { } } 11
- Hoạt động của Applet • init(): khởitạoapplet • start(): applet bắt đầuhoạt động • stop(): applet chấmdứthoạt động • destroy(): giải phóng applet • Chú ý: • paint() không phải là phương thức của Applet mà là của Component. • paint() được gọi mỗi khi cửa sổ được vẽ lại. 12
- Hoạt động của Applet • Vòng đờicủamộtApplet • Nạpmột applet: applet đượckhởitạovà thựcthi • Chuyểnhoặctrở về trang Web: Các phương thức stop và start sẽđượcgọi • Nạplại applet: như quá trình nạpapplet • Thoát khỏitrìnhduyệt: phương thứcstop và destroy sẽđượcgọi 13
- LớpGraphics • java.awt.Graphics là lớpcungcấpcác phương thứcvẽđồhoạ cơ bản: • Đường thẳng (Line) • Đường oval (Oval) • Hình chữ nhật (Rectangle) • Đa giác (Polygon) • Vănbản(Text) • Hình ảnh (Image) • 14
- LớpGraphics • Hệ toạđộ x (0,0) Màn hình y 15
- Lớp Graphics • Vẽđường thẳng • public void drawLine(int x1, int y1, int x2, int y2); • Vẽ hình chữ nhật • public void drawRect(int x, int y, int width, int height); • Tô mộthìnhchữ nhật • public void fillRect(int x, int y, int width, int height); • Xoá một vùng chữ nhật • public void clearRect(int x, int y, int width, int height); • Vẽ đa giác • public void drawPolygon(int[] x, int[] y, int numPoint); • public void drawPolygon(Polygon p); 16
- Lớp Graphics import java.applet.Applet; •imDemoport java.awt.Graphics; public class DemoRect extends Applet { public void init() { System.out.println("Demonstration of some simple figures"); } public void paint(Graphics g) { g.drawLine(70, 300, 400, 250); g.drawRect(100, 50, 130, 170); g.fillRect(120, 70, 70, 70); int[] x = { 280, 310, 330, 430, 370 }; int[] y = { 2p0, 140, 170, 70, 90 }; g.drawPolygon(x, y, x.length); } } 17
- Lớp Graphics 18
- Lớp Graphics • Vẽđường tròn/elip • public void drawOval(int x, int y, int width, int height); • Tô đường tròn/elip • public void fillOval(int x, int y, int width, int height); • Vẽ cung tròn • public void drawArc(int x, int y, int width, int height, int startAngle, int arcAngle); • Vẽ xâu kí tự • public void drawString(String str, int x, int y); • Vẽ ảnh • public void drawImage(Image img, int x, int y, ); 19
- Lớp Graphics import java.applet.Applet; •imDemoport java.awt.Graphics; public class DemoOval extends Applet { public void init() { System.out.println("Demonstration of some simple figures"); } public void paint(Graphics g) { int xstart = 70, ystart = 40, size = 100; g.drawOval(xstart, ystart, size, size); g.drawOval(xstart + (size*3)/4, ystart, size, size); g.drawOval(xstart + size/2, ystart + size/2, size, size); g.drawArc(xstart, ystart, 300, 200, 0, -90); g.drawString("good morning !", xstart + 265, ystart + 90); } } 20
- Lớp Graphics 21
- Lớp Graphics import java.applet.Applet; •imDemoport java.awt.Graphics; import java.awt.Image; public class DemoImage extends Applet { public void init() { System.out.println("Demonstration of imaging"); } public void paint(Graphics g) { Image image = getToolkit().getImage("summer.jpg"); g.drawImage(image, 0, 0, this); } } 22
- Lớp Graphics 23
- Các lớptiệníchkhác • Lớp Point: biểudiễn điểmtrênmànhình • Lớp Dimension: biểudiễnkíchthướcvề chiềurộng và chiềucaocủa một đối tượng • Lớp Rectangle: biểu diễn hình chữ nhật • Lớp Polygon: biểu diễn đa giác • Lớp Color: biểu diễn màu sắc 24
- Các lớptiệníchkhác •importDemojava.applet.Applet; import java.awt.*; public class DemoColor extends Applet { public void paint(Graphics g) { Dimension size = getSize(); g.setColor(Color.orange); g.fillRect(0, 0, size.width, size.height); Color color = new Color(10, 150, 20); g.setColor(color); g.drawString("I am a colorful string", size.width/2 - 50, size.height/2); } } 25
- Các lớptiệníchkhác 26
- Xử lý font vẽ import java.applet.Applet; •importDatjava.awt.*; font public class DemoFont extends Applet { public void paint(Graphics g) { Font font = new Font("Arial", Font.BOLD, 30); g.setFont(font); g.drawString("I am font Arial, bold, size 30", 50, 50); } } 27
- Bài tập tại lớp • Bài 1: Sinh 100 đường thẳng có toạ độ ngẫu nhiên và màu ngẫu nhiên 28
- Bài tập tại lớp • Bài 2: Vẽ sự thay đổi của màu xanh lá cây 29
- Bài tập tại lớp • Bài 3: Tính toán toạ độ và vẽ ra màn hình các hình sau. 30
- Kĩ thuật khung hình phụ • Ví dụ về sự di chuyển “bị nháy” import java.applet.Applet; import java.awt.*; public class DemoMove1 extends Applet { private int x = 50; private int y = 50; public void paint(Graphics g) { if (x > 300) x = 50; g.fillOval(x, y, 100, 100); delay(100); move(); } 31
- Kĩ thuật khung hình phụ • Ví dụ về sự di chuyển “bị nháy” public void delay(int milisecond) { try { Thread.sleep(milisecond); } catch (Exception e) {} } public void move() { x += 5; repaint(); // ve lai cua so } } 32
- Kĩ thuật khung hình phụ • Giải thích lý do nháy: • Mỗi lần gọi repaint() thì update() được gọi • update() xoá nội dung cửa sổ và gọi paint() • Khắc phục: • Vẽ hình vào một khung hình phụ trong bộ nhớ thay vì vẽ trực tiếp ra màn hình. • Khi vẽ xong, khung hình phụ được hiển thị ra màn hình trong phương thức paint(). • Nạp chồng update() để tránh việc xoá nội dung cửa sổ. 33
- Kĩ thuật khung hình phụ • Giải pháp // public class DemoMove2 extends Applet { // private Image offImage; private Graphics offGraphics; public void init() { // tao khung hinh phu offImage = createImage(500, 500); // lay doi tuong do hoa de ve vao khung hinh phu offGraphics = offImage.getGraphics(); } 34
- Kĩ thuật khung hình phụ • Giải pháp public void paint(Graphics g) { // offGraphics.clearRect(0, 0, 500, 500); offGraphics.fillOval(x, y, 100, 100); g.drawImage(offImage, 0, 0, this); // } public void update(Graphics g) { paint(g); } // } 35
- Applet • Khả năng củaApplet • Applet được đặt tại một Server trên mạng • Applet được chuyển tới máy Client theo một trang HTML nào đó • Khi một trình duyệt (tương thích với Java) nhận được trang web này, nó sẽ tải mã của Applet và thực thi trên máy client 36
- Applet • GiớihạncủaApplet • Không đượcnạpcácthư việnhay cácphương thứcsử dụng mã gốc (native code). • Không được đọcvàghilêncáctậptin của máy đang chạy chúng. • Không đượckhởi động bấtkỳ chương trình nào trên máy đang chạy. • Không được đọcbấtkỳ tính chấtnàocủahệ thống. 37
- Bài tập 1. Xây dựng mộtapplet để vẽ ra mộtkhuôn mặtnhư hình vẽ sau: 38
- Bài tập 2. Vẽđồthị hàm số y = 3*x*x - 6*x+ 1 3. Vẽđồthị hàm số y = sin(x) 39
- Bài tập 4. Dùng kĩ thuật khung hình phụ để vẽ một quả bóng chuyển động tự do trong một applet. 5. Mở rộng bài toán với 2 quả bóng. 6. Mở rộng bài toán với nền applet là một hình ảnh. 7. Mở rộng bài toán với quả bóng là một hình ảnh và có nhiều quả bóng chuyển động đồng thời. 40