ươ
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();
}
}