Kỹ thuật lập trình Java căn bản - 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 thông thường

 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 đồ hoạ, màu, font chữ trong Applet

pdf26 trang | Chuyên mục: Java | Chia sẻ: dkS00TYs | Lượt xem: 2283 | Lượt tải: 0download
Tóm tắt nội dung Kỹ thuật lập trình Java căn bản - 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
Environment như sau: 
GraphicsEnvironment ge; 
ge = GraphicsEnvironment.getLocalGraphicsEnvironment (); 
Đối tượng này sử dụng cú pháp sau để lấy tất cả các font có trong mảng 
Chương 6: Applets 167 
Font: 
Font f[] = ge.getAllFonts(); 
Phương thức getAllFont() được sử dụng ở đây. Phương thức getAllFonts() 
thuộc lớp GraphicsEnvironment. Đây là lớp trừu tượng, do đó ta không thể 
khởi tạo lớp nà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 này được gán cho biến ge. Biến này gọi phương thức 
getAllFont(). Chúng ta sử dụng các font khác nhau để hiển thị các chuổi khác 
nhau. Phương thức getFont() trả về font mặc định dùng để hiển thị chuỗi, khi 
không có chọn font nào cả. 
Font defaultFont = g.getFont (); //g là đối tượng Graphics 
g.drawString (“Default Font is ”, 30, 50); 
Dialog là font mặc định của hệ thống. 
Để thay đổi font mặc định của hệ thống thành font khác, chúng ta tạo đối 
tượng của lớp Font. Phương thức khởi tạo của Font có 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. Ví dụ: Font.BOLD, Font.PLAIN, Font.ITALIC. 
 Kích thước font. 
Cú pháp sau minh hoạ 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à kích thước của font. Những thông số này tạo ra đối tượng f1. 
Chúng ta có thể kết hợp 2 kiểu font lại với nhau. Hãy xét ví 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. 
6.8 Lớp FontMetrics 
Lớp này xác định kích thước của các ký tự khác nhau thuộc các loại font khác 
nhau. Xác định kích thước bao gồm chiều cao (height), baseline, descent, và 
leading. Điều này rất cần thiết vì các ký tự khi in đều chiếm một kích thước 
riêng. Bạn cần tính kích thước cần thiết khi in các ký tự để tránh các ký tự đè 
lên nhau. 
168 Core Java 
 Height: chiều cao của font. 
 Baseline (Dòng cơ sở): xác định cơ sở của các ký tự (không kể phần 
thấp nhất của ký tự) 
 Ascent: khoảng cách từ đường baseline đến đỉnh của ký tự. 
 Descent: khoảng các từ baseline đề đáy của ký tự. 
 Leading: khoảng cách giữa các chữ. 
Chương trình 6.7 minh hoạ việc sử dụng các phương thức khác nhau mà lớp 
FontMetrics có. Trong chương trình này, chúng ta sử dụng các phương thức 
khác nhau để xem xét chi tiết các loạ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, vì FontMetrics đi đôi với một font nào đó. 
FontMetrics fm = g.getFontMetrics (f1); 
Lệnh này tạo đối tượng fm của lớp FontMetrics, cùng với đối tượng f1. Bây 
giờ, chúng ta sử dụng fm để lấy chi tiết của font. 
Cá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 trả về Font 
mà gắn với đối tượng lớp FontMetrics. Phương thức getName() của lớp Font 
trả về tên Font. 
Chương trình 6.7 
import java.awt.*; 
class FontMetricsUse extends Frame 
{ 
 public FontMetricsUse() 
 { 
 super ("Detail of 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); 
 String name = fm.getFont().getName(); 
 g.drawString ("Details of Font " + name, 30, 50); 
 g.drawString ("Height: " + String.valueOf (fm.getHeight()), 50, 75); 
 g.drawString ("Ascent: " + String.valueOf (fm.getAscent()), 50, 100); 
 g.drawString ("Descent: " + String.valueOf (fm.getDescent()), 50, 125); 
 g.drawString ("Leading: " + String.valueOf (fm.getLeading()), 50, 150); 
 Font f2 = new Font ("DialogInput", Font.PLAIN, 22); 
Chương 6: Applets 169 
 fm = g.getFontMetrics (f2); 
 name = fm.getFont().getName(); 
 g.drawString ("Details of Font " + name, 30, 175); 
 g.drawString ("Height: " + String.valueOf (fm.getHeight()), 50, 200); 
 g.drawString ("Ascent: " + String.valueOf (fm.getAscent()), 50, 225); 
 g.drawString ("Descent: " + 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 quả của chương trình trên: 
Hình 6.9 Lớp FontMetrics 
Chương trình 6.8 minh hoạ cách lớp FontMetrics được sử dụng để in đoạn văn 
bản nhiều font, nhiều dòng. Trong chương trình này, chúng ta cần in văn bản 
nhiều font trên nhiều dòng. Lớp FontMetrics giúp ta xác định khoảng cách 
cần thiết để in một dòng văn bản cho một font nào đó. Điều này thật cần 
thiết, bởi vì dòng thứ 2 được in ngay sau dòng thứ nhất. 
Trước tiên chúng ta in msg1 sử dụng font Monospaced. Sau đó, chúng ta in 
msg2 sử dụng font DiaglogInput. Để làm được điều này, chúng ta cần tính 
khoảng cách cần thiết để in msg1. Phương thức stringWidth() của lớp 
FontMetrics được dùng để tính ra tổng khoảng cách cần thiết để in msg1. Khi 
chúng cộng thêm khoảng cách này vào biến x, chúng ta sẽ lấy được vị trí mà 
chúng ta bắt đầu in đoạn văn bản kế tiếp, msg2. Phương thức setFont() được 
dùng để thiết lập font để in văn bản. 
170 Core Java 
Kế đó, chúng ta in msg1 và msg2 trên các dòng khác nhau sử dụng chung 1 
font Monospaced. Ở đây, chúng ta cần biết khoảng cách chiều cao của font, 
để in dòng kế tiếp. Phương thức getHeight() được dùng để làm điều này. 
Chương trì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; 
 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 quả của chương trình trên: 
Chương 6: Applets 171 
Hình 6.10 Văn bản được xuất nhiều font, nhiều dòng 
6.9 Chọn chế độ (mode) để vẽ 
Các đối tượng được vẽ bằng cách sử dụng mode vẽ. Khi một đối tượng mới 
được vẽ, nó sẽ đè lên các hình đã vẽ trước đây. Tương tự, khi các đối tượng 
được vẽ đi vẽ lại nhiều lần thì chúng sẽ xoá các đối tượng đã vẽ trước đó. 
Chỉ hiển thị nội dung của đối tượng mới. Để làm cho nội dung củ và nội dung 
mới đều hiển thị trên cùng nền, lớp Graphics cung cấp phương thức 
setXORMode (Color c); 
Chương trình 6.9 minh hoạ 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ô 
các hình đồ hoạ khác nhau, mà không đè lên các hình khác. Kết quả là, khi 
sử dụng mode XOR thì hiển nhiên là tất cả các hình đều hiển thị đầy đủ. Điều 
này có nghĩa là các hình mới không đè lên các hình củ. Thay vào đó, phần 
chung giữa các hình sẽ được hiển thị thành một màu khác. Nhưng khi không 
sử dụng mode XOR, hình mới hoàn toàn che khuất những hình trước đó. 
Chương trình 6.9 
import java.awt.*; 
class PaintMode extends Frame 
{ 
 public PaintMode() 
 { 
 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); 
172 Core Java 
 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 quả của chương trình trên: 
Hình 6.11 Paint mode 
Tóm tắt 
 Applet là chương trình Java chạy trong trình duyệt web. 
 Một chương trình Java có thể vừa là applet, vừa là application. 
 Lớp Graphics nằm trong gói AWT, bao gồm các phương thức được sử 
dụng để vẽ các hình đồ hoạ như hình oval, hình chữ nhật, hình vuông, 
hình tròn, đường thẳng và văn bản. 
 Java sử dụng bảng màu RGB. 
 Lớp Font trong gói java.awt cho phép sử dụng nhiều font khác nhau. 
 Lớp FontMetrics xác định kích thước của các ký tự. 
Chương 6: Applets 173 
Kiểm tra sự tiến bộ 
1. Phương thức ................dùng để tạm dừng applet. 
2. Phương thức ................dùng để cập nhật (update) cửa sổ. 
3. Một chương trình Java có thể vừa là applet, vừa là application. 
Đúng/Sai 
4. Java applet không thể đọc, ghi file trên máy người sử dụng. 
Đúng/Sai 
5. Phương thức ................dùng để tạo tham chiếu đến đối tượng nền đồ 
hoạ (Graphics). 
6. Trong java, điều khiển màu sắc được thực hiện thông qua hai màu cơ 
bản là trắng và đen. Đúng/Sai 
7. Phương thức ................dùng để lấy tất cả các font chữ mà hệ thống 
hỗ trợ. 
8. Trong lớp FontMetrics, 'ascent' là khoảng cách từ 'baseline' đến đáy 
của ký tự. Đúng/Sai 
174 Core Java 
Bài tập 
1. Viết applet như sau: 
Khi người sử dụng nhập vào ô văn bản và click chuột vào nút 'Check 
identifier' applet phải kiểm tra xem từ có trong ô văn bản có phải là một từ 
khoá có trong java không. 
Ghi chú: Sử dụng các font chữ khác nhau cho ô văn bản, nút lệnh và nhãn. 
2. Viết applet như sau: 
Người sử dụng được phép nhập vào giá trị màu trong các ô tương ứng. Khi 
click nút 'Draw' các biểu đồ dạng đường, bar, pie được hiện ra. 

File đính kèm:

  • pdfKỹ thuật lập trình Java căn bản - Chương 6_APPLETS.pdf
Tài liệu liên quan