Các phương thức cơ bản của một Applet Để đáp ứng các sự kiện chính trên Applet, mỗi Applet thường cài đặt 4 phương thức tương ứng: • init : Khởi tạo Applet, được dùng hàm xây dựng của A
Trang 1CHƯƠNG 3
JAVA APPLETS
Trang 3http://java.sun.com/applets/jdk/1.4/index.html
Trang 4Ví dụ về Applet
Tạo một file nguồn Java HelloWorld.java có nội dung như sau:
Lưu ý rằng trong NetBean thì đây
là một Projects không có hàm main
nên không thể biên dịch và chạy cả
một Project Sử dụng Shift + F6 để
biên dịch chỉ một file nguồn Java.
Trang 5Tạo một trang HTML chứa Applet
Ta tạo một trang web HTML có nội dung như sau:
Đặt trang web này và file ví dụ trên vào cùng thư mục Chúng ta sẽ có một applet chạy trên Web.
Chú ý: Để applet hiển thị tốt unicode trong trình duyệt ta biên dịch :
javac –encoding utf-8 HelloWorld.java Mặc định, NetBeans luôn biên dịch theo chuẩn UTF-8 nên không cần phải chuyển đổi.
Trang 6Phân tích ví dụ
Kế thừa Applet và tham khảo đến thư viện đồ họa
Chỉ có phương thức paint, không có hàm main
Trang 7Tổng quan về một Applet
• Java là dẫn xuất của lớp chuẩn Applet theo sơ
đồ sau:
java.lang.Object java.awt.Component java.awt.Container java.applet.Applet
Trang 8Vòng đời của 1 applet
Dừng
Trang 9Các phương thức cơ bản của một
Applet
Để đáp ứng các sự kiện chính trên Applet, mỗi
Applet thường cài đặt 4 phương thức tương ứng:
• init() : Khởi tạo Applet, được dùng hàm xây dựng của Applet.
• start() : Bắt đầu hoạt động của applet như khi
nạp applet hay khi người dùng thăm lại trang
Trang 10Ví dụ khác về Applet
Trang 12Phân tích
để hiển thị trong applet
• paint() : phương thức hiển thị cơ bản Thường các
applet dùng paint() để biểu diễn các hoạt động của
mình trên trang Web.
• update() : là phương thức ta dùng sau khi thực hiện
paint() nằm làm tăng hiệu quả vẽ.
Applet còn thừa hưởng các phương thức về sự kiện như
click chuột, rê chuột, thả … trong lớp Event cũng của
AWT.
Trang 13Thư viện AWT
– Là bộ thư viện công cụ lập trình Windows trừu tượng dùng để xây dựng giao diện người dùng (GUI).
– Cung cấp đầy đủ các đối tượng cần thiết để lắp ghép và tạo nên một ứng dụng Windows thuần nhất.
– Các thành phần giao diện đồ họa nằm trong gói
java.awt
Trang 14Các thành phần của AWT
Component
Button TextComponent
TextField
TextArena Checkbox
Container
Panel Applet
Windows
Frame Dialog
MenuComponent
Menu MenuBar MenuItem List
Scrollbar Label Choice
Trang 15Containers và Layout Manager
• Container : Là đối tượng dùng để chứa đựng các đối tượng khác Ngoại trừ Canvas.
• Layout Manager : là một đối tượng được
dùng để điều khiển vị trí và kích thước của
các thành phần bên trong một đối tượng
Container
• Events : Các thành phần có thể nhận các sự
kiện từ chuột và bàn phím.
Trang 16Danh sách các Layout Manager
Trang 18• Đây là layout mặc định cho Applet, đơn giản là đặt các thành phần trên cùng một dòng từ trái sang phải, khi chiều dài không đủ thì đối tượng tiếp theo sẽ
được đặt ở hàng dưới Cách canh lề mặc định là
canh giữa.
• Có thể đặt lại thứ từ từ trái sang phải hay ngược lại
bằng phương thức setComponentOrientation
Trang 19• Các đối tượng được đặt vừa vặn với khung
chứa và nằm chồng lên nhau như các lá bài Như vậy ta chỉ thấy được một đối tượng Các đối tượng khác nằm bên dưới sẽ bị che khuất
Trang 20• Tạo một khung lưới vô hình với các ô bằng
nhau Các đối tượng sẽ đặt vừa các ô đó Thứ tực sắp xếp cũng là từ trái qua phải, từ trên xuống
Trang 21• Đây là cách trình bày uyển chuyển những cũng dễ gây hiểu lầm nhất Các đối tượng trong khung chứa cũng được đưa vào một khung lưới tương tự
GridLayout nhưng kích thước các đối tượng không nhất thiết phải vừa khít dựa trên tùy chọn
GridBagConstraint
Trang 22Các trình bày tự do (NULL Layout)
• Khi áp dụng cách trình bày này, ta phải làm tất cả
bằng tay từ việc định vị trí tọa độ chính xác trên màn hình cho đối tượng.
• Để áp dụng cách trình bày này ta dùng:
setLayout( null )
• Các hàm thường dùng:
public void setLocation(Point p )
public void setSize(Dimension d )
public void setBounds(Rectangle r )
Trang 23Các phương thức chung
Do hầu hết các thành phần đều được dẫn xuất từ lớp
cha là component cho nên chúng đều có những
phương thức được thiết kế sẵn từ lớp cha component
Dưới đây là các phương chung:
public void setBackground(Color c): Đặt màu nền
public Color getBackground(Color c): Lấy màu nền
public void setForeground(Color c): Đặt màu chữ
public Color getForeground(Color c): Lấy màu chữ
public void setVisible(boolean isShowed ): Ẩn/hiện một đối tượng
Trang 24Các phương thức chung
public void setFont(Font f): Thay đổi font hiển thị cho các
đối tượng (TextField, TextArea, Button, Checkbox, …)
public Font getFont(): Lấy thuộc tính font của đối tượng.
public FontMetrics getFontMetrics(Font f): Lấy thông tin về kích thước của đối tượng font đang được sử dụng.
public Component getComponentAt(Point P): Tìm đối
tượng con ở tọa độ p(x,y) trong khung chứa Container
public void setEnabled(): “bật” hoặc “tắt” component
public void repaint(): cập nhật lại component
public void update(Graphics g): được gọi qua repaint()
Trang 25Các sự kiện chung
Các tình huống hay các sự kiện xuất phát từ lớp Component đa phần là những sự kiện sau:
public void addComponentListener(ComponentListener l)
// Xử lý các sự kiện khi đối tượng thay đổi về kích thước, hiện ra hay ẩn đi như phương thức setVisible()
public void addFocusListener(FocusListener l)
public void addKeyListener(KeyListener l)
public void addMouseListener(MouseListener l)
public void addMouseMotionListener(MouseMotionListener l)
Trang 26• Đây là một khung vẽ, cung cấp cho ta phương
thức paint(Graphic g) giống như của Applet
• Đối tượng Canvas có thể tự mình tạo ra những đối tượng đồ họa khá đặc sắc
• Thông thường, khi muốn sử dụng Canvas
người ta tạo ra một lớp khác dẫn xuất từ lớp
Canvas và cài đặt phương thức paint() cho nó.
Trang 27Tạo đối tượng Button bằng cú pháp:
public Button(String label )
Với label là tên nhãn mà ta muốn hiển thị như “OK” hay
“Cancel”
Ví dụ:
Button myButton = new Button(“ Press me ”);
Sau đó add vào cửa sổ chương trình bằng dòng lệnh;
add (myButton);
Các hàm thông dụng khác:
public void setLabel(String newLabel)
public String getLabel()
Trang 28Tạo đối tượng Label bằng cú pháp:
public Label(String labelText )
Ví dụ:
Label myLabel = new Label(“ Hello ”);
Những giá trị canh lề của lớp Label gồm: CENTER, LEFT, RIGHT
Ví dụ:
Label myLabel = new Label(“ right Hello ”,Label.RIGHT);
Các hàm thông dụng khác:
public String getText()
public String setText()
public int getAlignment()
public int setAlignment() throws IlligalArgmentException
Trang 29Checkbox và Radio Button
• Gồm 2 phần: Nhãn và một dấu biểu hiện trạng thái của ô kiểu boolean Mặc định là false.
• Tạo đối tượng Checkbox bằng cú pháp:
public Checkbox()
public Checkbox(String checkboxLabel )
public Checkbox(String checkboxLabel, boolean state )
public Checkbox(String checkboxLabel, boolean state,
CheckboxGroup g )
• Các hàm thông dụng khác:
public boolean getState()
public void setState(boolean state)
• Sự kiện: ItemListener
addItemListener, removeItemListener,
• Radio button là một trường hợp đặt biệt của Checkbox với
CheckboxGroup.
Trang 30• Như một trình đơn xổ xuống một danh sách.
• Tạo đối tượng Choice bằng cú pháp:
public synchroized void remove(int i);
public synchroized void removeAll();
public synchroized void select(int i)
throws IlligalArgumentException;
public void select(String item);
public int getSelectedIndex();
public String getSelectedItem();
Trang 31• Lớp List cho phép ta tạo một danh sách các phần tử
để lựa chọn chứ không chỉ hiện một phần tử như
Choice.
• Tạo đối tượng List bằng cú pháp:
public List()
public List(int rows)
public List(int rows,boolean multiMode)
• Ta dùng phương thức add để thêm vào danh sách:
public synchroized void add(String item)
public synchroized void add(String item,int index)
Trang 32• Các phương thức thường dùng:
public synchroized void replaceItem(Stringvalue, int pos);
public synchroized void remove(int pos);
public synchroized void removeAll();
public int getSelectedIndex();
public synchroized int[] getSelectedIdexs();
public String getSelectedItem();
public synchroized String[] getSelectedItems();
public synchroized void select(int i)
public synchroized void deselect(int i);
public synchroized boolean isSelected(int index);
public void setMultiplesSelections(boolean allow);
public boolean isMultiplesMode();
public void makeVisible(int index);
Trang 33TextField và TextArea
TextField là vùng có khả năng nhập dòng văn
bản Cú pháp:
public TextField()
public TextField(String initText)
public TextField(int numColumns)
public TextField(String initText, int numColumns)
TextArea là vùng có khả năng nhập nhiều dòng
văn bản Cú pháp:
public TextArea()
public TextArea(String initText)
public TextArea(int rows, int cols)
public TextArea(String initText,int rows,int cols)
Trang 34TextField và TextArea
• Các phương thức thường dùng:
public void setText(String newText);
public String getText();
public String getSelectedText();
public int getSelectionStart();
public int getSelectionEnd();
public void selectAll();
public void setEditable(boolean canEdited);
public boolean getEditable();
Trang 35• Các phương thức của riêng TextField:
tự ch thay cho các ký tự thực nhập vào Thườngdùng cho các ô mật khẩu
biệt được đặt ở trên
của ô văn bản (tính theo ký tự) là bao nhiêu
Trang 36• Các phương thức của riêng TextArea:
public void appendText(String newText): Thêm một dòng văn bản.
public void insertText(String newText,int pos) :
Chèn vào một đoạn văn bản tại vị trí pos.
public void replaceText(String newText, int start, int end): Thay thế một đoạn văn bản.
Trang 38Giới hạn của applet
• Không được đọc/ghi lên các tập tin của máyđang chạy
• Không được thực hiện các kết nối mạng (ngoạitrừ kết nối với máy đang chạy)
• Không được khởi động các chương trình trênmáy đang chạy
• Không được đọc bất kỳ tính chất nào của hệthống
Trang 39Khả năng của applet
• Applet có thể tạo kết nối đến máy đang chạy
• Applet có thể gọi đến các phương thức toàncục của các applet khác trên cùng trang web
• Các applet được nạp từ hệ thống tập tin cục
bộ sẽ không bị giới hạn của các applet đượcnạp từ trên mạng
• Không nhất thiết applet ngừng lại khi ta thoátkhỏi các trang web chứa nó