Appletlà một chương trình Java được
nhúng vào một trang HTML và thực thi
trên một trình duyệt hỗ trợ Java
36 trang |
Chia sẻ: Mr Hưng | Lượt xem: 849 | Lượt tải: 0
Bạn đang xem trước 20 trang nội dung tài liệu Lập trình mạng - Applet, để xem tài liệu hoàn chỉnh bạn click vào nút DOWNLOAD ở trên
Chapter 5
Define an applet
Differentiate between Java Applications and
Java Applets
Create an applet
Identify how parameters are passed to
applets
Discuss event handling with Applets
Explain Classes such as
◦ Graphics class
◦ Font class
◦ FontMetrics class
◦ Color class
2
Được tạo ra từ lớp con của lớp
java.applet.Applet
Một số trình duyệt hỗ trợ Java: Internet
Explorer, Netscape Communicator
Applet là một chương trình Java được
nhúng vào một trang HTML và thực thi
trên một trình duyệt hỗ trợ Java
3
Lớp Applet là một thành phần của AWT, nằm
gói khác java.awt
Lớp java.applet.Applet cung cấp mọi
chức năng phục vụ việc thực thi các ứng
dụng nhúng applet:
◦ Các thành phần GUI và các Container được
nhúng vào 1 applet.
◦ Các thao tác thực hiện của applet được viết đè
trong hàm paint()
4
Applet định nghĩa cấu trúc của nó từ bốn sự
kiện xảy ra trong quá trình thực thi
Với mỗi sự kiện, một phương thức tự động
được gọi
Chu kỳ sống của một đối tượng xác định những
giai đoạn mà đối tượng phải trải qua từ khi đối
tượng được tạo ra cho đến lúc bị huỷ.
5
◦ init(): called during initialization
◦ start(): starts the applet once it is initialized
◦ stop(): used to pause the execution of an
applet
◦ destroy(): used to destroy the applet
◦ Phương thức paint() dùng để hiển thị một
đường, văn bản hay hình ảnh lên màn hình
◦ Khi applet được vẽ lại sau khi đã được vẽ một
lần, phương thức repaint() được dùng
◦ Khi xử lý các đối tượng điều khiển ko cần Paint()
The methods are as follows:
6
Redraw
Applet
stop( )
Start
state
start( ) paint( )
Applet
Working
Applet
Born
Applet
Displayed
Idle
State
Applet
Destroyed
Initialization
state
destroy( )
Destroy
Appletinit( )
7
8
Create a HTML page to display the applet
-> File name, ex: abc.html
Run Applet:
◦ Command Prompt: appletviewer abc.html.
◦ Open with IE
◦ Test in IDE Eclipse directly
An applet is compiled using the Java compiler:
javac
javac filename.java
9
import java.awt.*;
import java.applet.*;
public class Simple extends Applet
{
String str;
public void init() //-inoge
{
str = "Java is interesting!";
}
public void paint(Graphics g){
g.drawString(str, 50, 50);
}
}
10
The first my Web
<APPLET
code="Simple.class" width=200 height=200 >
import java.awt.*;
import java.applet.*;
import javax.swing.JLabel;
public class Simple extends Applet {
String str;
JLabel g;
public void init(){
str = "Java is interesting!";
g= new JLabel (str);
add(g);
}
}
import java.awt.Graphics;
public class Simple extends
Applet {
String str;
public void paint(Graphics g){
str = "Java is interesting!";
g.drawString(str, 50, 50);
}
}
11
import java.awt.*;
import java.applet.*;
public class Simple extends Applet {
Image img;
public void init() {
img =getImage(getCodeBase(),"cafe.gif");
}
public void paint(Graphics g) {
g.drawImage(img,20,20,this);
}
}
12
Các lớp:
Image;
Graphics
Phương thức:
- getCodeBase() URL
của applet
- getImage() trả về một
đối tượng Image có thể
vẽ trên màn hình
- drawImage() lấy bốn
tham số – đối tượng
Image, vị trí gồm toạ độ
x và y, đối tượng kiểu
ImageObserver
<APPLET
CODE = ClassFile width=x height=y //tên tệp thực thi applet
[CODEBASE = URLDirectory] //xác định vị trí tệp từ xa
[ARCHIVE = JarFileName] //Các tệp thực thi đặt vào tệp Jar
[OBJECT = SerializeAppletFile]// Các object thực hiện tuần tự
[NAME = AnotherAppletName]
[ALIGN = AligmentOnPage]
. >
[]
[]
[]
13
Các tham số được truyền cho applet
dùng thẻ trong file HTML
Giá trị tham số được rút trích trong
applet dùng phương thức:
getParameter()trả về một chuỗi
Các tham số cho phép người dùng
kiểm soát những nhân tố của applet
import java.awt.*;
import java.applet.*;
public class ImageDemo extends Applet
{
Image img;
public void init() {
String imagename = getParameter("image");
img = getImage(getCodeBase(),imagename);
}
public void paint(Graphics g) {
g.drawImage(img,20,20,this);
}
}
15
img =getImage(getCodeBase(),
"cafe.gif");
16
function Standard Applet
Ứng dụng: trên Server/Client. Công cụ phát
triển software
Được thiết kế để ứng dụng
trên web
Khai báo: Là lớp con của bất kỳ lớp nào
trong các gói
Phải là lớp con của Applet
GUI Tùy chọn Do trình Web
Cách thức
thực hiện
Bắt đầu bằng hàm main() Bắt đầu bằng hàm init()
Dữ liệu vào Thông qua tham số dòng lệnh Các tham số đặt trong tệp
HTML
Cách nạp
và chạy CT
Nạp bằng dòng lệnh và thực hiện
nhờ trình biên dịch Java
Thông qua trang web
Yêu cầu bộ
nhớ
Bộ nhớ tối thiểu Bộ nhớ dành cho cả trình
duyệt và applet
17
GUI được dùng để tạo ra một giao diện có
nhiều tranh ảnh để dễ làm việc
Layout mặc định của applet là FlowLayout
Những đối tượng điều khiển có thể tạo ra
◦ Cách tạo tương tự trong AWT
◦ Khác là không cần tạo thành phần (Frame) để chứa các
điều khiển
Trong khi thiết kế applet ta cần bẫy các sự kiện
này và cung cấp những hành vi thích hợp được
thực hiện để đáp ứng mỗi sự kiện
Thủ tục theo sau khi một sự kiện được tạo ra
◦ Xác định loại sự kiện
◦ Xác định thành phần tạo ra sự kiện
◦ Viết lệnh xử lý sự kiện
Click hay nhấn phím Enter trên những thành
phần GUI sẽ tạo ra một sự kiện
import java.awt.*;
import java.awt.event.*;
import java.applet.*;
public class Simple extends Applet implements
ActionListener {
Label lbl1, lbl2, lblKq;
TextField txt1, txt2;
Button btnAccept, btnThoat;
public void init()
{this.setLayout(new GridLayout(6,2));
lbl1 = new Label("Nguoi thu nhat:");
this.add(lbl1);
txt1 = new TextField();
this.add(txt1);
lbl2 = new Label("Nguoi thu hai:");
this.add(lbl2);
txt2 = new TextField();
this.add(txt2);
lblKq = new Label();
this.add(lblKq);
this.add(new Label());
// Các nút nhấn
btnAccept = new Button("Accept");
btnAccept.addActionListener(this);
this.add(btnAccept);
btnThoat = new Button("Thoat");
btnThoat.addActionListener(this);
this.add(btnThoat);
}
/* Phương thức xửlí sựkiện nútđược nhấn */
public void actionPerformed(ActionEvent ae){
String kq="";
if(ae.getSource() == btnAccept) //
kq = txt1.getText() + " và " + txt2.getText();
if(ae.getSource() == btnThoat) // Thoát khỏi chương
trình
System.exit(0);
// Thayđổi nội dung kết quả
lblKq.setText("Chao mung 2 ban " + kq);
repaint(); // Vẽlại cácđối tượng}
}
}
19
/* <applet code = Mousey width = 400 height =
400>
*/
import java.awt.*;
import java.applet.*;
import java.awt.event.*;
public class Mousey extends Applet implements
MouseListener, MouseMotionListener
{
int x1, y1, x2, y2;
public void init()
{
setLayout(new FlowLayout());
setBounds(100,100,300,300);
addMouseListener(this);
addMouseMotionListener(this);
this.setVisible(true);
}
public void mouseClicked(MouseEvent e)
{
}
public void mousePressed(MouseEvent e)
{
x1 = e.getX();
y1 = e.getY();
}
public void mouseMoved(MouseEvent e)
{}
public void mouseReleased(MouseEvent e)
{
x2 = e.getX();
y2 = e.getY();
repaint();
}
public void mouseEntered(MouseEvent e)
{}
public void mouseDragged(MouseEvent e)
{}
public void mouseExited(MouseEvent e)
{}
public void paint(Graphics g)
{
g.drawRect(x1, y1, x2-x1, y2-y1);
x2 = 0;
y2 = 0;
}
}
20
/*
*/
import java.applet.*;
import java.awt.*;
import java.awt.event.*;
public class Painting extends Applet implements ActionListener,
MouseListener
{
Button bdraw = new Button("Draw Rectangle");
int count = 0,x1,x2,x3,x4;
public void init()
{
BorderLayout border = new BorderLayout();
setLayout(border);
add(bdraw, BorderLayout.PAGE_END);
bdraw.addActionListener(this);
addMouseListener(this);
this.setVisible(true);
}
public void mouseClicked(MouseEvent e)
{}
21
public void mousePressed(MouseEvent e)
{
x1 = e.getX();
x2 = e.getY();
}
public void mouseMove(MouseEvent e)
{
x3 = e.getX();
x4 = e.getY();
repaint();
}
public void mouseReleased(MouseEvent e)
{
x3 = e.getX();
x4 = e.getY();
repaint();
}
public void mouseEntered(MouseEvent e)
{}
public void mouseExited(MouseEvent e)
{}
22
public void actionPerformed(ActionEvent e)
{
String str = e.getActionCommand();
if("Draw Rectangle".equals(str))
{
count = 1;
repaint( );
}
}
public void paint(Graphics g)
{
if(count == 1)
{
g.drawRect(x1,x2,(x3-x1),(x4-x2));
x3 = x4 = 0;
}
}
}
Graphics class is a part of the
java.awt package.
It has to be imported into the program.
Thủ tục tổng quát để vẽ hình ảnh
• Lấy URL hay đường dẫn đến hình ảnh được
hiển thị
• Quyết định vị trí hình ảnh hiển thị
• Cung cấp những thông tin này dùng một
phương thức thích hợp
23
Hỗ trợ vẽ các hình:
◦ drawLine,
◦ drawRect,
◦ draw3DRect,
◦ drawOval,
◦ drawArc
Tô màu: fillRect, fillRoundRect, fillOval, fillArc
Đa giác:
◦ constructor: Polygon
◦ drawPolygon
◦ fillPolygon
24
import java.applet.*;
import java.awt.*;
public class vehinh extends Applet {
int hinh;
Button nut;
public void init(){
hinh=0;
nut= new Button("Hinh tiep: ");
add(nut);
}
public void paint(Graphics g) {
int num =5;
switch (hinh){
case 0: g.drawLine(35,160, 70, 150);
break;
case 1: g.drawRect(35,160, 70, 150);
break;
case 2: g.drawRoundRect(35,160, 70,
150,90,200); break;
case 3: g.drawOval(20,50, 170, 250); break;
case 4: g.drawArc(35,160, 70, 150,210,150);
break;
}
}
public boolean action(Event e, Object o){
++hinh;
if (hinh==5)
hinh=0;
repaint();
return true;
}
}
25
One of the constructor of the Font class is:
◦ public Font(String name, int style,
int pointsize)
name can be “Times New Roman”, “Arial” and
so on.
style can be Font.PLAIN, Font.BOLD,
Font.ITALIC
pointsize for fonts can be 11,12,14,16 and so
on.
java.awt.Font class is used to set or
retrieve fonts.
26
/*
/*
*/
import java.applet.*;
import java.awt.*;
public class FontDemo extends Applet
{
public void paint(Graphics g)
{
String quote = "Attitude is the mind’s paintbrush";
Font objFont = new Font("Georgia",Font.ITALIC,20);
g.setFont(objFont);
g.drawString(quote,20,20);
}
}
27
In such a case, the FontMetrics class proves
useful.
Commonly used methods of FontMetrics
class:
◦ int stringWidth(String s) – returns full width
of string
◦ int charWidth(char c) – returns width of that
character
◦ int getHeight() – returns total height of the font
At times, it is necessary to know the attributes of
fonts used within a program.
28
/*
*/
import java.applet.*;
import java.awt.*;
public class TextCentre extends Applet
{
public void paint(Graphics g)
{
String myquote = "Happiness is an attitude.";
Font objFont = new Font("Times New Roman" , Font.BOLD|Font.ITALIC , 24);
FontMetrics fm = getFontMetrics(objFont);
g.setFont(objFont);
int numx = (getSize().width - fm.stringWidth(myquote))/2;
int numy = getSize().height/2;
g.drawString(myquote,numx,numy);
}
}
29
We should always know which fonts are available on
the machine.
We can use a method called
getAvailableFontFamilyNames() defined in the
GraphicsEnvironment class.
The syntax of the method is as follows:
◦ String[] getAvailableFontFamilyNames(): returns
an array of Strings that contains the names of the available
font families.
◦ Font[] getAllFonts(): returns an array of Font objects
for all the available fonts.
30
Objects of Color class can be constructed
as shown :
◦ Color a = new Color(255,255,0);
◦ Color b = new Color(0.907F,2F,0F);
To change or set colors for a component :
◦ void setColor(Color) of Graphics class
◦ void setForeground(Color) of Component
class ,inherited by various components
◦ void setBackground(Color) of Component
class ,inherited by various components
java.awt.Color class is used to add color
to applications and applets.
31
Void loop()
Void play()
Void stop()
AudioClip getAudioClip
32
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
public class JAppletDemo extends JApplet
{
private int APPLET_WIDTH = 300,
APPLET_HEIGHT = 35;
private int pushes;
private JLabel label;
private JButton push;
public void init () {
pushes = 0;
push = new JButton ("Push Me!");
push.addActionListener (new
ButtonListener());
label = new JLabel ("Pushes: " +
Integer.toString (pushes));
Container cp = getContentPane();
cp.setBackground (Color.yellow);
cp.setLayout (new FlowLayout());
cp.add (push);
cp.add (label);
setSize (APPLET_WIDTH, APPLET_HEIGHT);
}
private class ButtonListener implements
ActionListener
{
public void actionPerformed (ActionEvent
event)
{
pushes++;
label.setText("Pushes: " + Integer.toString
(pushes));
repaint ();
}
}
}
33
Kết hợp ứng dụng độc lập và Applet
◦ Định nghĩa lớp ứng dụng, kế thừa Applet
◦ Phải có hàm main()
Tạo đối tượng thuộc lớp ứng dụng mở rộng
Ex, dlap
Gọi hàm init():
ex, dlap.init();
Tạo thành phần chứa các đối tượng (Frame)
Ex, ObjFr
Gọi phương thức add: add(component)
ex, ObjFr.add(dlap)
34
import java.applet.Applet;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
public class app_dlap extends Applet
implements ActionListener
{
Button a = new Button("OK");
Button b=new Button("Exit");
TextField x=new TextField(10);
TextField y=new TextField(10);
public void init ()
{
resize(300,100);
add(a); a.addActionListener(this);
add(b); b.addActionListener(this);
add(x);
add(y);
}
public static void main (String args[])
{
app_dlap dlap = new app_dlap();
Frame ObjFr = new Frame("Ung dung doc
lap - Applet");
ObjFr.setLayout(new FlowLayout());
ObjFr.resize(300,100);
dlap.init();
ObjFr.add(dlap);
ObjFr.setVisible(true);
}
public void actionPerformed(ActionEvent e) {
if (e.getSource() == a)
System.out.println("Hello");
else
System.exit(0);
}
}
35
An Applet is a Java program that can be executed
with the help of a Java enabled browser.
Every user-defined applet must extend the
java.applet.Applet class.
A user defined applets inherits all the methods of
Applet class.
.. tags are used within a HTML
file to embed a class file.
The default layout for an applet is FlowLayout.
Images can be drawn on an applet by means of the
paint(), getImage() and drawImage() methods.
Whenever the user performs an action such as moving
the mouse, pressing a key, releasing the key and so
on, an event is generated. We can make use of event
handler classes and interfaces to handle these events.
36
Các file đính kèm theo tài liệu này:
- lap_trinh_mang_chapter5_2_java_applet_821.pdf