Core Java - Chương 6: Applets

Sau khi học xong chương này, bạn cóthểnắm được các nội dung sau:

¾ Hiểu được các Applet của Java

¾ Phân biệt applet vàcác ứng dụng application

¾ Tìm hiểu chu trình sống cuảmột applet

¾ Tạo các applet

¾ Hiển thịcác hình ảnh sửdụng applet

¾ Truyền tham sốcho applet

¾ Tìm hiểu ứng dụng của applet trong GUI

pdf25 trang | Chuyên mục: Java | Chia sẻ: dkS00TYs | Lượt xem: 2271 | Lượt tải: 2download
Tóm tắt nội dung Core Java - Chương 6: Applets, để xem tài liệu hoàn chỉnh bạn click vào nút "TẢI VỀ" ở trên
hổ trợ hay không. Phương 
thức’getAllFont()’ trả vê ̀ tâ ́t ca ̉ ca ́c font mà hê ̣ thô ́ng hổ trợ. 
19 
Trước tiên, khai ba ́o một đối tượng của lớp GraphicsEnvironment như sau: 
Graphicenvironment ge; 
ge = GraphicsEnvironment.getLocalGraphicsEnvironment (); 
Đối tượng na ̀y sử dụng cú pha ́p sau đê ̉ lâ ́y tâ ́t ca ̉ ca ́c font có trong ma ̃ng Font: 
Font f[] = ge.getAllFonts(); 
Phương thức getAllFont() được sử dụng ở đây. Phương thức getAllFont() thuộc lớp 
GraphicsEnvironment. Đây là lớp trừu tượng, do đó ta không thê ̉ khởi ta ̣o lớp na ̀y. đê ̉ 
truy câ ̣p phương thức getAllFont(), chúng ta sử dụng phương thức 
‘getLoacalGraphicsEnvironment()’ của lớp GraphicsEnvironment. 
ge = GraphicsEnvironment.getLocalGraphicsEnvironment (); 
Tham chiếu đê ́n lớp na ̀y được ga ́n cho biê ́n ge. Biê ́n na ̀y gọi phương thức getAllFont(). 
Chúng ta sử dụng ca ́c font khác nhau đê ̉ hiê ̉n thi ̣ ca ́c chuổi kha ́c nhau. Phương thức 
getFont() trả vê ̀ font mặc đi ̣nh dùng đê ̉ hiê ̉n thi ̣ chuô ̃i, khi không có cho ̣n font na ̀o ca ̉. 
Font defaultFont = g.getFont (); //g là đối tượng Graphics 
g.drawString (“Default Font is ”, 30, 50); 
Dialog la ̀ font mặc đi ̣nh của hê ̣ thô ́ng. 
Đê ̉ thay đổi font mặc đi ̣nh của hê ̣ thống tha ̀nh font kha ́c, chúng ta ta ̣o đối tượng của lớp 
Font. Ha ̀m dựng của Font lấy 3 tham sô ́ sau: 
¾ Tên của font. Ta có thê ̉ lâ ́y tên thông qua phương thức getFontList(). 
¾ Kiê ̉u của font. Vi ́ dụ: Font.BOLD, Font.PLAIN, Font.ITALIC. 
¾ Ki ́ch thước font. 
Cú pha ́p sau minh hoa ̣ những thông sô ́ trên: 
Font f1 = new Font (“SansSerif”, Font.ITALIC, 16); 
g.setFont (f1); 
Ba tham số được truyê ̀n ở đây là: ‘SanSerif’ – tên của font, Font.BOLD – kiê ̉u font, 14 là 
ki ́ch thước của font. Những thông sô ́ na ̀y ta ̣o ra đối tượng f1. Chúng ta có thê ̉ kê ́t hợp 2 
kiê ̉u font lại với nhau. Ha ̃y xe ́t vi ́ dụ sau: 
Font f3 = new Font (“Monospaced”, Font.ITALIC+Font.BOLD, 20); 
Ở đây kiê ̉u font của f3 vừa đâ ̣m, vừa nghiêng. 
20 
6.8 Lớp FontMetrics 
Lớp na ̀y xa ́c đi ̣nh ki ́ch thước của ca ́c ký tự kha ́c nhau thuộc ca ́c loa ̣i font khác nhau. Xa ́c 
đi ̣nh ki ́ch thước bao gồm chiê ̀u cao (height), baseline, descent, va ̀ leading. Điê ̀u na ̀y râ ́t 
câ ̀n thiê ́t vi ̀ ca ́c ký tự khi in đê ̀u chiê ́m một ki ́ch thước riêng. Ba ̣n câ ̀n ti ́nh ki ́ch thước câ ̀n 
thiết khi in ca ́c ký tự đê ̉ tra ́nh ca ́c ký tự ghi đe ̀ lên nhau. 
¾ Height: chiều cao của font. 
¾ Baseline (Do ̀ng cơ sở): xa ́c đi ̣nh cơ sở của ca ́c ký tự (không kê ̉ phâ ̀n thâ ́p nhâ ́t của ký 
tự) 
¾ Ascent: khoảng ca ́ch từ đường baseline đê ́n đi ̉nh của ký tự. 
¾ Descent: khoa ̉ng ca ́c từ baseline đê ̀ đa ́y của ký tự. 
¾ Leading: khoa ̉ng ca ́ch giữa ca ́c dòng chữ in. 
Chương tri ̀nh 6.7 minh hoa ̣ viê ̣c sử dụng ca ́c phương thức kha ́c nhau ma ̀ lớp FontMetrics 
có. Trong chương tri ̀nh na ̀y, chu ́ng ta sử dụng ca ́c phương thức kha ́c nhau đê ̉ xem xe ́t chi 
tiê ́t ca ́c loa ̣i font khác nhau. Lớp FontMetric là lớp trừu tượng. Phương thức 
getFontMetrics() có tham số là đối tượng của lớp Font, vi ̀ FontMetrics đi đôi với một font 
na ̀o đó. 
FontMetrics fm = g.getFontMetrics (f1); 
Lê ̣nh na ̀y ta ̣o đối tượng fm của lớp FontMetrics, cùng với đối tượng f1. Bây giờ, chu ́ng ta 
sử dụng fm đê ̉ lâ ́y chi tiết của font. 
Ca ́c phương thức getHeight, getAscent(), getDescent(), và getLeading() trả về chi tiết của 
font. Phương thức getFont() của lớp FontMetrics tra ̉ vê ̀ Font ma ̀ kê ́t hợp với đối tượng 
của lớp FontMetrics. Phương thức getName() của lớp Font tra ̉ vê ̀ tên Font. 
Chương tri ̀nh 6.7 
import java.awt.*; 
class FontMetricsUse extends Frame 
{ 
 public FontMetricsUse() 
 { 
 super ("Detail oc Fonts"); 
 setSize (400, 300); 
 setVisible(true); 
 } 
 public void paint (Graphics g) 
 { 
 Font f1 = new Font ("Times Roman", Font.PLAIN, 22); 
 FontMetrics fm = g.getFontMetrics (f1); 
21 
 String name = fm.getFont().getName(); 
 g.drawString ("Details of Font " + name, 30, 50); 
 g.drawString ("Leading: " + String.valueOf (fm.getHeight()), 50, 75); 
 g.drawString ("Leading: " + String.valueOf (fm.getAscent()), 50, 100); 
 g.drawString ("Leading: " + String.valueOf (fm.getDescent()), 50, 125); 
 g.drawString ("Leading: " + String.valueOf (fm.getLeading()), 50, 150); 
 Font f2 = new Font ("DialogInput", Font.PLAIN, 22); 
 fm = g.getFontMetrics (f2); 
 name = fm.getFont().getName(); 
 g.drawString ("Details of Font " + name, 30, 175); 
 g.drawString ("Leading: " + String.valueOf (fm.getHeight()), 50, 200); 
 g.drawString ("Leading: " + String.valueOf (fm.getAscent()), 50, 225); 
 g.drawString ("Leading: " + String.valueOf (fm.getDescent()), 50, 250); 
 g.drawString ("Leading: " + String.valueOf (fm.getLeading()), 50, 275); 
 } 
 public static void main (String args[]) 
 { 
 new FontMetricsUse (); 
 } 
} 
Kê ́t qua ̉ cu ̉a chương tri ̀nh trên: 
Hi ̀nh 6.9 Lớp FontMetrics 
Chương tri ̀nh 6.8 minh hoa ̣ ca ́ch lớp FontMetrics được sử dụng đê ̉ in đoa ̣n văn ba ̉n nhiê ̀u 
font, nhiê ̀u dòng. Trong chương tri ̀nh na ̀y, chu ́ng ta câ ̀n in văn ba ̉n nhiê ̀u font trên nhiê ̀u 
22 
dòng. Lớp FontMetrics giu ́p ta xa ́c đi ̣nh khoa ̉ng ca ́ch câ ̀n thiê ́t đê ̉ in một dòng văn ba ̉n 
cho một font nào đó. Điê ̀u na ̀y thâ ̣t câ ̀n thiê ́t, bởi vi ̀ dòng thứ 2 được in ngay sau do ̀ng thứ 
nhâ ́t. 
Trước tiên chu ́ng ta in msg1 sử dụng font Monospaced. Sau đó, chu ́ng ta xuâ ́t msg2 sử 
dụng font iaglogInput. Đê ̉ la ̀m được điê ̀u na ̀y, chu ́ng ta câ ̀n ti ́nh khỏng ca ́ch câ ̀n thiê ́t đê ̉ 
xuâ ́t msg1. Phương thức stringWidth() cu ̉a lớp FontMetrics được dùng đê ̉ ti ́nh ra tổng 
khoa ̉ng ca ́ch câ ̀n thiê ́t đê ̉ xuâ ́t msg1. khi chúng cộng thêm khoa ̉ng ca ́ch na ̀y va ̀o biê ́n x, 
chúng ta se ̃ lâ ́y được vi ̣ tri ́ ma ̀ chúng ta bắt đâ ̀u in đoa ̣n văn ba ̉n kê ́ tiê ́p, msg2. Phương 
thức setFont() được dùng đê ̉ thiê ́t lâ ̣p font đê ̉ in văn ba ̉n. 
Kê ́ đó, chu ́ng ta xuâ ́t msg1 va ̀ msg2 trên ca ́c dòng kha ́c nhau sử dụng chung 1 font 
Monospaced. Ở đây, chúng ta câ ̀n biê ́t khoa ̉ng ca ́ch chiều cao của font, đê ̉ in do ̀ng kê ́ 
tiê ́p. Phương thức getHeight() được dùng đê ̉ la ̀m điê ̀u na ̀y. 
Chương tri ̀nh 6.8 
import java.awt.*; 
class MultiFontMultiLine extends Frame 
{ 
 public MultiFontMultiLine() 
 { 
 super ("Multiline Text"); 
 setSize (450, 200); 
 setVisible (true); 
 } 
 public void paint (Graphics g) 
 { 
 Font f1 = new Font ("MonoSpaced", Font.BOLD, 18); 
 Font f2 = new Font ("DialogInput", Font.PLAIN, 14); 
 int x = 20; 
 int y = 50; 
 String msg1 = "Java Language"; 
 String msg2 = "A new approach to programming"; 
 FontMetrics fm = g.getFontMetrics(f1); 
 g.setFont(f1); 
 g.drawString (msg1, x, y); 
 x = x + fm.stringWidth(msg1); 
 g.setFont(f2); 
 g.drawString (msg2, x, y); 
 g.setFont(f1); 
 y = 100; 
 x = 20; 
23 
 int height = fm.getHeight(); 
 g.drawString (msg1, x, y); 
 y += height; 
 g.drawString (msg2, x, y); 
 } 
 public static void main (String args[]) 
 { 
 new MultiFontMultiLine (); 
 } 
} 
Kê ́t qua ̉ cu ̉a chương tri ̀nh trên: 
Hi ̀nh 6.10 Văn ba ̉n được xuất nhiều font, nhiê ̀u do ̀ng 
6.9 Cho ̣n mode để vẽ 
Ca ́c đối tượng được ve ̃ bằng ca ́ch sử dụng mode ve ̃. Khi một đối tượng mới được ve ̃, nó 
se ̃ đe ̀ lên ca ́c hi ̀nh đa ̃ ve ̃ trước đây. Tương tự, khi ca ́c đối tượng được ve ̃ đi ve ̃ la ̣i nhiều 
lâ ̀n thi ̀ chúng se ̃ xoa ́ ca ́c đối tượng đa ̃ ve ̃ trước đó. Chi ̉ hiê ̉n thi ̣ nội dung của đối tượng 
mới. Đê ̉ la ̀m cho nô ̣i dung củ va ̀ nội dung mới đê ̀u hiê ̉n thi ̣ trên ma ̀n hi ̀nh, lớp Graphics 
cung câ ́p phương thức setXORMode (Color c); 
Chương tri ̀nh 6.9 minh hoa ̣ tiê ̣n lợi của của viê ̣c sử dụng phương thức setXORMode(). Ở 
đây, chúng ta sử dụng phương thức setXORMode() đê ̉ tô ca ́c hi ̀nh đồ hoa ̣ kha ́c nhau, ma ̀ 
không đe ̀ lên ca ́c hi ̀nh kha ́c. Kê ́t qua ̉ la ̀, khi sử dụng mode XOR thi ̀ hiê ̉n nhiên là tâ ́t ca ̉ 
ca ́c hi ̀nh đê ̀u hiê ̉n thi ̣ đâ ̀y đủ. Điê ̀u na ̀y có nghi ̃a la ̀ ca ́c hi ̀nh mới không đe ̀ lên ca ́c hi ̀nh củ. 
Thay va ̀o đó, phâ ̀n chung giữa ca ́c hi ̀nh se ̃ được hiê ̉n thi ̣ tha ̀nh một ma ̀u kha ́c. Nhưng khi 
không sử dụng mode XOR, hi ̀nh mới hoa ̀n toa ̀n che khuâ ́t những hi ̀nh trước đó. 
Chương ti ̀rnh 6.9 
import java.awt.*; 
class PaintMode extends Frame 
{ 
 public PaintMode() 
24 
 { 
 super ("Paint Mode"); 
 setSize (300, 300); 
 setVisible (true); 
 } 
 public void paint (Graphics g) 
 { 
 g.setPaintMode (); 
 g.setColor (Color.blue); 
 g.fillRect (50,50,40, 30); 
 g.setColor (Color.pink); 
 g.fillOval (70, 65, 30, 60); 
 g.setColor (Color.cyan); 
 g.fillRoundRect (90, 80, 70, 50, 20, 30); 
 g.setColor (Color.blue); 
 g.fillRect (50, 150, 40, 30); 
 g.setXORMode (Color.yellow); 
 g.fillOval (70, 165, 30, 60); 
 g.setXORMode (Color.magenta); 
 g.fillRoundRect (90, 180, 60, 40, 50, 20); 
 } 
 public static void main (String args[]) 
 { 
 new PaintMode(); 
 } 
} 
Kê ́t qua ̉ cu ̉a chương tri ̀nh trên: 
Hi ̀nh 6.11 Paint mode 
25 
Tóm tắt 
¾ Applet là chương tri ̀nh Java cha ̣y trong tri ̀nh duyê ̣t web. 
¾ Chương tri ̀nh Java đơn le ̉ co ́ thê ̉ vừa la ̀ applet, vừa la ̀ application. 
¾ Lớp Graphics nằm trong go ́i AWT, bao gồm ca ́c phương thức được sử dụng đê ̉ ve ̃ ca ́c 
hi ̀nh đồ hoa ̣ như oval, hi ̀nh chữ nhâ ̣t, hi ̀nh vuông, hi ̀nh tro ̀n, đường thẳng va ̀ văn ba ̉n. 
¾ Java sử dụng ba ̉ng ma ̀u RGB. 
¾ Lớp Font trong go ́i java.awt cho phe ́p sử dụng nhiê ̀u font kha ́c nhau. 
¾ Lớp FontMetrics xa ́c đi ̣nh ki ́ch thước của ca ́c ký tự. 

File đính kèm:

  • pdfUnlock-CoreJava_C6.pdf
Tài liệu liên quan