ươ

Ch

ng 9

ườ

Giao Di n Ng

i Dùng

Chương 9: Giao diện người dùng

o Giới thiệu các loại ứng dụng

o Tạo các applet

o Đối tượng đồ hoạ Graphics.

Hai loại ứng dụng Applet

o Applet

– Chương trình Java chạy trong một trang web nhờ

vào trình duyệt hỗ trợ Java.

o 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.

Giới thiệu Applet

o Applet thu c gói ‘java.applet’. Đ  s  d ng applet

ể ử ụ

§

ả ộ ph i chèn 2 gói sau:

§

import java.applet

import java.awt

ứ ơ ả ủ ố o B n ph ng th c c  b n c a applet: intit(), start(),

ươ stop(), destroy().

o Ngoài ra còn có ph

ươ ng th c ứ panit() và repaint(),

showStatic().

o Ph

ườ ượ ng đ ể c dùng đ ứ init() và paint() th

ươ ở ạ ng th c  ẽ kh i t o và v  applet.

o Ph

ươ ủ ạ ị ng th c ỉ ứ g.drawstring() ch  ra v  trí c a đo n

ẽ ả văn b n v  ra trên màn hình.

Giới thiệu Applet

o

init()

§ Đ c g i khi kh i t o applet.

ượ ọ ở ạ

§ T i các hình  nh đ  h a, kh i t o bi n, t o đ i

ở ạ ồ ọ ế ả ạ ố

o start()

ả ượ t ng.

§ Đ c g i khi m t applet b t đ u th c thi.

ượ ọ ắ ầ ự ộ

§ Dùng kh i đ ng l

ở ộ ạ ị ừ ướ i applet khi nó b  ng ng tr c

o stop()

đó.

ượ ọ ự ừ § Đ c g i khi ng ng th c thi applet.

§ M t applet b  ng ng tr

o destroy()

ị ừ ộ ướ ị ủ c khi nó b  h y.

§ Đ c dùng đ  h y m t applet

ể ủ ượ ộ

§ B  nh , th i gian x  lý, không gian đĩa b  thu h i

ử ộ ớ ờ ồ ị

Giới thiệu Applet

o paint()

ị ộ ườ ẳ ặ ng th ng (line), text ho c

ể ệ § Dùng đ  hi n th  m t đ ả ộ m t hình  nh.

§ Tham s  c a ph

ố ủ ươ ố ượ ứ ng th c này là đ i t ủ ớ ng c a l p

o repaint()

Graphichs.

§ Đ c s  d ng khi c a s  c n c p nh t l

ử ổ ầ ậ ượ ử ụ ậ ạ i

§ Ph

ươ ứ ộ ố ỉ ng th c này ch  có m t tham s .

§ Tham s  c a ph

ố ủ ươ ố ượ ứ ng th c này là đ i t ủ ớ ng c a l p

o showStatic()

Graphichs

§ Dùng đ  hi n thi thông tin trên thanh tr ng thái.

ể ệ ạ

Xây dựng các Applet

• Ví dụ 1: Tạo file TestApplet.java

import javax.swing.JApplet;

import java.awt.Graphics;

public class TestApplet extends JApplet

{

public void paint( Graphics g)

{

g.drawString(“Hello world!”, 50, 25);

}

}

Xây dựng các Applet

o Cách 1:

§ Tạo file TestApplet.html (đ t trong th  m c bin có

ư ụ ặ

) có nội dung như sau: ứ ch a file TestApplet.class

§ Mở file này bằng trình duyệt WEB

o Cách 2:

§ Dùng công cụ appletviewer có trong JDK.

§ Gõ lệnh: appletviewer TestApplet.html.

o Cách 3: Thực thi bằng các IDE

Cấu trúc của một Applet đơn giả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) {…}

}

Hoạt động của Applet

o Vòng đời của một Applet

§ Nạp một applet: applet được khởi tạo và

§ Chuyển hoặc trở về trang Web: Các phương

thực thi

§ Nạp lại applet: như quá trình nạp applet

§ Thoát khỏi trình duyệt: phương thức stop và

thức stop và start sẽ được gọi

destroy sẽ được gọi.

Lớp Graphics

o

§ Đường thẳng (Line)

§ Đường oval (Oval)

§ Hình chữ nhật (Rectangle)

§ Đa giác (Polygon)

§ Văn bản (Text)

§ Hình ảnh (Image)

java.awt.Graphics là lớp cung cấp các phương thức vẽ đồ hoạ cơ bản:

Lớp Graphics

o Hệ tọa độ:

Lớp Graphics

o Vẽ đường thẳng:

public void drawLine(int x1, int y1, int x2, int y2);

o Vẽ hình chữ nhật:

public void drawRect(int x, int y, int width, int height);

o Tô một hình chữ nhật:

public void fillRect(int x, int y, int width, int height);

o Xoá một vùng chữ nhật:

public void clearRect(int x, int y, int width, int height);

o Vẽ đa giác:

public void drawPolygon(int[] x, int[] y, int

numPoint);

public void drawPolygon(Polygon p);

Ví dụ:

import javax.swing.JApplet;

import java.awt.Graphics;

public class DemoRect extends JApplet{

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 = { 200, 140, 170, 70, 90 };

g.drawPolygon(x, y, x.length);

}

}

Lớp Graphics

o Vẽ đường tròn/elip

public void drawOval(int x, int y, int width, int height);

o Tô đường tròn/elip

public void fillOval(int x, int y, int width, int height);

o Vẽ cung tròn

public void drawArc(int x, int y, int width, int height, int startAngle, int arcAngle);

o Vẽ xâu kí tự

public void drawString(String str, int x, int y);

o Vẽ ảnh

public void drawImage(Image img, int x, int y,...);

Ví dụ:

import javax.swing.JApplet;

import java.awt.Graphics;

public class DemoOval extends JApplet {

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);

}

}

Hiện thị ảnh

o

o Tạo đối tượng Image:

§ Image image =

import lớp java.awt.Image;

o Dùng phương

getToolkit().getImage("summer.jpg");

thức drawImage của lớp

§ g.drawImage(image, 0, 0, this);

Graphics để vẽ hình:

Hiện thị ảnh

import javax.swing.JApplet;

import java.awt.Graphics;

import java.awt.Image;

public class DemoImage extends JApplet{

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);

}

}

Các lớp tiện ích khác

Các lớp tiện ích khác

import javax.swing.JApplet;

import java.awt.*;

public class DemoColor extends JApplet{

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);

}

}

Xử lý font vẽ

import javax.swing.JApplet;

import java.awt.*;

public class DemoFont extends JApplet{

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);

}

}

Chèn âm thanh vào Applet

o

o Gắn file âm thanh (.au, .wav) vào một đối thức

import lớp java.applet.AudioClip;

phương bằng

tượng AudioClip getAudioClip:

o Dùng phương thức play() của lớp AudioClip để

AudioClip gong = getAudioClip(getDocumentBase(), "gong.au");

phát âm thanh.

Chèn âm thanh vào Applet

import java.applet.AudioClip;

import java.applet.Applet;

public class SoundApplet extends Applet {

public void init() {

super.init();

AudioClip gong = getAudioClip(getDocumentBase(), "gong.au");

gong.play();

}

}

Khả năng của Applet

Giới hạn của Applet