1. Trang chủ
  2. » Công Nghệ Thông Tin

giáo trình java tóm tắt - awt

26 437 0

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Định dạng
Số trang 26
Dung lượng 448,5 KB

Các công cụ chuyển đổi và chỉnh sửa cho tài liệu này

Nội dung

Bảng 1: Một số constructor của Dialog Ta cũng có các phương thức khởi tạo tương tự ứng cho trường hợp owner là một Frame.. Bảng 5: Một số phương thức cập nhật của Container Nếu Container

Trang 1

AWT 1

1 Giới thiệu 1

2 Container 2

3 Một số control thường dùng 8

4 Layout manager 15

5 Menu 25

1 Giới thiệu

1.1 Về AWT

AWT (Abstract Window Toolkit) là một package có sẵn trong JDK (java.awt), nó cung cấp các thành phần cơ bản để xây dựng các ứng dụng GUI (Graphics User Interface – Giao diện Người dùng Đồ họa)

Ứng dụng GUI được tạo ra bởi AWT sẽ không phụ thuộc vào hệ điều hành, có nghĩa là chúng sẽ trông như nhau ở mọi loại máy tính

1.2 Cấu trúc của AWT

AWT bao gồm nhiều class cho phép kế thừa, từ đó lập trình viên có thể tạo ra nhiều loại control (thành phần giao diện) đa dạng theo ý mình

Trang 2

Hình 1: Cấu trúc của AWT

Như hình trên, ở cấp cao nhất của AWT có các class như BorderLayout, FlowLayout,

MenuComponent, Component, Graphics, Image, Polygon, Dưới đó là các class nhưButton, Canvas, MenuItem, Trong đó, Component và Container là hai class quan trọngcủa AWT Component là lớp cha của nhiều control thường dùng, còn Container là class

để chứa các Component khác

2 Container

các control khác (hoặc Container khác) bên trong nó

Thông thường, khi cần dùng các Container thì ta sẽ tạo ra class kế thừa từ chúng

Dimension Event Font FlowLayout FontMetrics Graphics GridBagLayout GridLayout Image Insets

Point Polygon Rectangle Toolkit MenuComponent

Component

FileDialog

Button Canvas Checkbox Choice Container

ScrollBar

Label List

Panel Window ScrollPane

Applet

Dialog Frame

TextComponent

TextField TextArea

MenuBar MenuItem

CheckboxMenuItem

AWTException AWTError Exception

Error

Trang 3

Có hai loại Window là Frame và Dialog.

nhỏ hoặc thay đổi kích thước bằng mouse

modal Dialog sẽ "khóa" hết các cửa sổ khác của ứng dụng cho đến khi ta đóng Dialog

Trang 4

2.2 Các thao tác cơ bản trên Container

2.2.1 Khởi tạo một Container

Bản thân Container chỉ có một phương thức khởi tạo mặc định Tuy nhiên, các dẫn xuấtcủa Container là Window (gồm Dialog, Frame) và Panel, thì có nhiều phương thứckhởi tạo khác nhau

a Dialog

Khi tạo một Dialog, ta cần cho biết owner của nó Owner của Dialog là một Frame hoặcmột Dialog khác Nếu owner là null thì phương thức khởi tạo sẽ phát sinh

Ngoài ra, còn các phương thức khởi tạo kèm theo title và trạng thái modal của Dialog

Bảng 1: Một số constructor của Dialog

Ta cũng có các phương thức khởi tạo tương tự ứng cho trường hợp owner là một Frame

b Frame

Bảng 2: Một số constructor của Frame

c Panel

Như đã nói trên, Panel không thể tồn tại độc lập mà phải thuộc về Container nào đó

Bảng 3: Một số constuctor của Panel

Trang 5

Sau khi tạo xong, cần phải đưa Panel vào một Container khác thì nó mới hoạt độngđược.

2.2.2 Thêm control vào Container

Để thêm control vào Container, ta dùng phương thức add() Phương thức này có cácdạng overloading như sau:

Thêm control có tên là name vào vị trí i của

Container Phương thức này không cònđược dùng dùng kể từ JDK 1.1

Bảng 4: Các phương thức add control vào Container

Nếu ta thêm control vào một Container đang được hiển thị trên màn hình thì phải gọiphương thức validate để Container tiến hành vẽ lại các control bên trong nó Nếu cầnthêm nhiều control cùng lúc, thì ta chỉ cần gọi validate một lần sau khi thêm controlcuối cùng

2.2.3 Điều chỉnh các thuộc tính của Container

Ta có thể thay đổi các thông số như kích thước, vị trí, của Container bằng các phươngthức sau:

tọa độ góc trên-trái của Container

rộng và chiều cao (tính bằng pixel)

void setFont(Font f) Đặt kiểu font cho Conatiner

void setLayout(LayoutManager mgr)

Đặt LayoutManager cho Container Đặt

null có nghĩa là không dùng

hình hay không

Bảng 5: Một số phương thức cập nhật của Container

Nếu Container là Frame hoặc Dialog, ta có thể dùng thêm các phương thức sau:

Trang 6

Phương thức Ý nghĩa

void setResizable(boolean r)

Cho phép hoặc không cho phép người dùngchỉnh kích thước của Frame/Dialog bằngmouse

rộng và chiều cao (tính bằng pixel)

void setFont(Font f) Đặt kiểu font cho Conatiner

void setLayout(LayoutManager mgr)

Đặt LayoutManager cho Container Đặt

null có nghĩa là không dùng

Bảng 6: Một số phương thức cập nhật của Frame và Dialog

Với Dialog, ta còn có thể cập nhật trang thái modal của nó bằng phương thức void

2.2.4 Bố trí control trên Container

Trong Container, các control được sắp đặt dựa vào LayoutManager Tuy nhiên, ta cũng

có thể tự sắp đặt "thủ công" bằng cách disable LayoutManager của Container Cáchdùng LayoutManager sẽ được trình bày sau

Để disable LayoutManager, ta chỉ cần đặt LayoutManager của Container về null

Sau đó, ta sẽ dùng phương thức setLocation để xác định tọa độ cho từng control trênContainer

Sau khi đã sắp đặt xong, ta sẽ gọi hiển thị Container bằng phương thức setVisible

hoặc show

2.2.5 Ví dụ

Để dùng AWT, ta phải import package AWT vào các file source code:

import java.awt.*;

thức khởi tạo mặc định của Frame01, ta sẽ điều chỉnh các thông số như tiêu đề, vị trí, kíchthước cho phù hợp Sau đó sẽ thêm một Panel vào Frame

// Khai báo Frame01 kế thừa từ Frame

public class Frame01 extends Frame

Trang 7

this.setTitle( "AWT Frame" ); // Đặt tiêu đề cho Frame

chuẩn Owner của Dialog này sẽ là Frame vừa tạo ở trên Sau khi tạo, ta sẽ chỉnh tiêu đề,

vị trí, kích thước rồi thêm vào nó một Label và một Button

public class Dialog01 extends Dialog

{

private Button bt=new Button();

private Label lb=new Label();

public Dialog01(Frame frm)

{

super(frm); // Gọi constructor của Dialog

Gọi hiển thị Frame và Dialog vừa tạo:

public class AWT01

{

public static void main(String[]args)

{

}

Trang 8

3 Một số control thường dùng

3.1 Tổng quát

Để tạo một control và đưa nó lên màn hình, dù nó thuộc loại nào, thông thường ta phảiqua các bước sau (ở đây chưa nói tới việc dùng LayoutManager):

 Khai báo và khởi tạo control (bằng từ khóa new)

 Đặt text cho control (nếu có) bằng constructor hoặc phương thức

 Chỉnh kích thước của control bằng phương thức setSize(int w, int h)

 Chỉnh vị trí của control bằng phương thức setLocation(int x, int y)

 Thêm control vào một Container bằng phương thức add(Component c)

Trang 9

Phương thức / Constructor Ý nghĩa

Đặt kiểu canh lề cho Label, gồm:

Bảng 7: Các phương thức chính của Label

Trang 10

Phương thức / Constructor Ý nghĩa

Bảng 8: Các phương thức chính của Button

Ví dụ:

Button bt=new Button( "OK" ); // Tạo button với nhãn là "OK"

Lưu ý: TextField chỉ cho nhập liệu trên một dòng, nghĩa là không cho phép xuống dòng.Các phương thức / constructor cần lưu ý:

thay đổi nội dung của TextField

Bảng 9: Các phương thức chính của TextField

Trang 11

Nếu ta không cho phép người dùng sửa nội dung, TextField sẽ có dạng sau:

Hình 8: TextField không cho thay đổi nội dung

3.5 Choice

Choice là control chứa sẵn các giá trị cho người dùng chọn lựa Điều này giúp việc nhậpliệu được nhanh chóng và không bị lỗi

Các phương thức cần lưu ý:

phát sinh sự kiện ItemEvent

Bảng 10: Các phương thức chính của Choice

Ví dụ:

c.setSize(50,22);

Trang 12

Checkbox là control cho phép người dùng chọn lựa với các giá trị có sẵn, thường là ít hơn

Có hai loại Checkbox là Checkbox thường và Checkbox dạng radio Với Checkbox

thường, việc chọn nó không ảnh hưởng gì tới check box khác Còn với Checkbox dạngradio, việc chọn một Checkbox sẽ kéo theo việc bỏ chọn Checkbox đang được chọn trongcùng nhóm (CheckboxGroup)

Mặc định, khi tạo một Checkbox thì nó sẽ là loại thường, muốn nó thành Checkbox dạngradio thì ta phải đưa nó vào CheckboxGroup

Các phương thức cần lưu ý:

state)

Tạo Checkbox có sẵn nhãn và trạng thái(true = được chọn)

state, CheckboxGroup group)

(khi đó nó sẽ là Checkbox dạng radio)

thuộc về

boolean getState() Cho biết trạng thái chọn / không chọn của

Trang 13

void setState(boolean state) Đặt trạng thái chọn / không chọn cho

Bảng 11: Các phương thức chính của Checkbox

Khi dùng CheckboxGroup, ta cần lưu ý các phương thức sau (CheckboxGroup chỉ cóconstructor mặc định):

nhóm

Bảng 12: Các phương thức chính của CheckboxGroup

Ví dụ tạo Checkbox thường:

Checkbox cb = new Checkbox ("Auto save" )

// Tạo 2 Checkbox và đưa vào group

Checkbox cbNam=new Checkbox( "Nam" ,cbgGioiTinh,true );

Checkbox cbNu =new Checkbox( "Nu" ,cbgGioiTinh,false);

Trang 14

1 mục, hiển thị cùng lúc 4 mục).

boolean multipleMode)

Tạo List với số mục hiển thị và trạng thái đachọn lựa biết trước

(khi dùng List đa lựa chọn)

void deselect(int index) Bỏ chọn mục thứ index

Bảng 13: Các phương thức chính của List

Ví dụ:

l.setSize(100,120);

l.setLocation(50,70);

Trang 15

Để khắc phục khó khăn trên, Java cung cấp các lớp layout manager với tính năng chính làchỉnh vị trí và kích thước control một cách tự động.

Sau đó, tùy vào cách sắp đặt mà ta có từng lớp cụ thể Tài liệu này sẽ giới thiệu cáclayout manager thường dùng của AWT, bao gồm BorderLayout, FlowLayout,

Mỗi lớp container (Frame, Dialog, Panel, ) đều có một layout manager đi kèm, nếulayout manager là null thì sẽ trở thành sắp đặt control "thủ công" Để đặt layout managercho container, ta dùng phương thức setLayout() của lớp Container

4.1 Lớp GridLayout

Như tên gọi, layout manager này bố trí các control theo lưới, mỗi vị trí là một ô tronglưới, và các ô có kích thước như nhau Kích thước này được tự động điều chỉnh theo kíchthước lưới và container

Nếu số control ít hơn số ô thì các ô còn lại sẽ được để trống

Để tạo ra một border layout, ta dùng các phương thức sau:

số cột thì tùy vào số control thêm vào

khoảng cách giữa các ô kề nhau là hgap

Trang 16

(ngang) và vgap (dọc)

Bảng 14: Các constructor của GridLayout

Ví dụ:

// Chỉnh title và kích thước của frame

this.setTitle( "Grid Layout" );

// Tạo grid layout 3 dòng, 4 cột

// Thêm các button vào frame

for(int i=0;i<10;i++)

Kết quả:

Hình 13: GridLayout

Chỉnh khoảng trống giữa các ô: dùng constructor thứ ba

Kết quả:

Trang 17

Hình 14: GridLayout với khoảng trống giữa các ô

ĐôngEast

TâyWest

NamSouthTrung tâmCenter

Trang 18

BorderLayout(int hgap, int vgap) Tạo border layout với khoảng cách giữa các

vùng là hgap (ngang) và vgap (dọc)

Bảng 15: Các constructor của BorderLayout

Khi thêm control vào container có border tayout, cần phải cho biết vị trí của control Vịtrí này được quy định thông qua các hằng số như sau:

// Chỉnh title và kích thước của frame

this.setTitle( "Border Layout" );

// Đặt layout manager cho frame

// Thêm các button vào frame

this.add(new Button( "Center" ) ,BorderLayout.CENTER);

Kết quả:

Hình 16: Frame dùng BorderLayout

Khi resize frame: các Button tự động resize theo

Trang 19

Hình 17: Frame dùng BorderLayout sau khi resize

Chỉnh khoảng trống giữa các vùng: dùng constructor thứ hai

Các kiểu canh lề của flow layout được quy định như sau:

Trang 20

 FlowLayout.LEADING: canh từ đầu dòng, nếu dùng kiểu trình bày từ trái qua phảithì đầu dòng sẽ là bên trái

phải thì đầu dòng sẽ là bên phải

Để tạo ra một flow layout, ta dùng các phương thức sau:

ngang-dọc là 5 pixel

Tạo flow layout với kiểu canh lề quy địnhbới thông số align, khoảng cách ngang-dọc

// Chỉnh title và kích thước của frame

this.setTitle( "Flow Layout" );

// Dùng flow layout mặc định

// Thêm các button vào frame

for(int i=0;i<10;i++)

Kết quả:

Hình 19: Frame với FlowLayout

Sau khi resize: các control tự xuống dòng và vẫn giữ kiểu canh lề như cũ

Trang 21

Hình 20: Frame sau khi resize

Đổi qua kiểu canh lề phải: dùng contructor thứ hai

Kết quả:

Hình 21: Flow layout canh lề phải

4.4 Lớp CardLayout

Card layout cho phép ta add nhiều control vào container, nhưng trong một thời điểm chỉ

có một control được hiển thị, và control này chiếm toàn bộ container

Khi thêm một control vào card layout, ta phải cung cấp một String cho nó để card layoutdựa vào đó mà gọi control khi cần

Theo mặc định thì control thêm vào đầu tiên sẽ được hiển thị

Để tạo ra một flow layout, ta dùng các phương thức sau:

Tạo card layout với khoảng cách ngang-dọcgiữa control so với biên của container là

hgap và vgap

Hình 22: Các constructor của CardLayout

Trang 22

Ví dụ:

// Chỉnh title và kích thước của frame

this.setTitle( "Card Layout" );

// Dùng card layout

// Thêm các button vào frame, dùng i làm chuỗi nhân dạng các button

for(int i=0;i<10;i++)

this.add(new Button( "Button " +i),String.valueOf(i));

Kết quả:

Hình 23: Frame dùng card layout

Để chỉ định control được hiển thị, ta dùng các phương thức sau:

chứa control đó

container chứa control đó

chứa control đó

chứa control đó

name

Ví dụ: Hiển thị button ứng với chuỗi "3" (đã add lúc trước)

cl.show(this, "3" );

Kết quả:

Trang 23

Hình 24: Frame với button thứ 3 được hiển thị

4.5 Lớp GridBagLayout

Đây là một layout manager rất mạnh, tuy nhiên việc sử dụng layout manager này kháphức tạp nên không tiện trình bày ở đây Chi tiết xin xem trong Java API Documents.Trong thực tế, ta có thể phối hợp các layout manager ở trên thay cho gird bag layout

Ví dụ:

// Chỉnh title và kích thước của frame

this.setTitle( "Grid Bag Layout" );

// Dùng grid bag layout

// Thêm các button vào frame

Trong đó, phương thức themNut() như sau:

private void themNut(String s,GridBagLayout gb,GridBagConstraints c) {

Trang 24

Button bt=new Button(s);

gb.setConstraints(bt,c);

}

Kết quả:

Hình 25: Frame với grid bag layout

4.6 Phối hợp các loại layout

Mỗi container chỉ được phép dùng một layout manager Để dùng nhiều layout managertrên một container, ta cần chia nó thành từng panel, sau đó trong mỗi panel ta dùng mộtlayout manager khác nhau

Ví dụ:

// Chỉnh title và kích thước của frame

this.setTitle( "Mixing Layouts" );

// Tạo ra các panel

// Chỉnh màu cho các panel để dễ phân biệt

pn1.setBackground(Color.pink);

pn2.setBackground(Color.green);

// Đặt layout manager cho các panel

// Đặt grid layout cho frame

// Đưa các panel vào frame

// Đưa các button vào panel pn1

for(int i=0;i<10;i++)

pn1.add(new Button( "Button " +i));

// Đưa các button vào panel pn2

Trang 25

Để tạo menu, ta sẽ tạo một MenuBar, sau đó tạo các Menu rồi add vào MenuBar, sau cùng

là tạo các MenuItem rồi đưa chúng vào từng Menu tương ứng

Sau khi tạo xong, ta thêm menu vào Window bằng phương thức setMenuBar()

Ví dụ:

// Tạo menu bar

MenuBar mnb=new MenuBar();

// Tạo các menu

// Tạo các menu item

Trang 26

Menu mnFileNew=new Menu( "New" ); // Menu con

MenuItem mnFileNewText=new MenuItem( "Text" );

MenuItem mnFileNewPicture=new MenuItem( "Picture" );

MenuItem mnFileOpen=new MenuItem( "Open" );

MenuItem mnFileClose=new MenuItem( "Close" );

MenuItem mnFileExit=new MenuItem( "Exit" );

MenuItem mnToolConvert=new MenuItem( "Convert" );

// Đưa các menu vào menu bar

Ngày đăng: 24/10/2014, 00:34

HÌNH ẢNH LIÊN QUAN

Hình 1: Cấu trúc của AWT - giáo trình java tóm tắt - awt
Hình 1 Cấu trúc của AWT (Trang 2)
Hình 2: AWT Frame - giáo trình java tóm tắt - awt
Hình 2 AWT Frame (Trang 3)
Bảng 6: Một số phương thức cập nhật của Frame và Dialog - giáo trình java tóm tắt - awt
Bảng 6 Một số phương thức cập nhật của Frame và Dialog (Trang 6)
Hình 4: Kết quả chạy ví dụ - giáo trình java tóm tắt - awt
Hình 4 Kết quả chạy ví dụ (Trang 8)
Bảng 14: Các constructor của GridLayout - giáo trình java tóm tắt - awt
Bảng 14 Các constructor của GridLayout (Trang 16)
Hình 14: GridLayout với khoảng trống giữa các ô - giáo trình java tóm tắt - awt
Hình 14 GridLayout với khoảng trống giữa các ô (Trang 17)
Hình 15: BorderLayout - giáo trình java tóm tắt - awt
Hình 15 BorderLayout (Trang 17)
Bảng 15: Các constructor của BorderLayout - giáo trình java tóm tắt - awt
Bảng 15 Các constructor của BorderLayout (Trang 18)
Hình 18: BorderLayout với khoảng cách ngang-dọc là 4-7 pixel - giáo trình java tóm tắt - awt
Hình 18 BorderLayout với khoảng cách ngang-dọc là 4-7 pixel (Trang 19)
Bảng 16: Các constructor của FlowLayout - giáo trình java tóm tắt - awt
Bảng 16 Các constructor của FlowLayout (Trang 20)
Hình 24: Frame với button thứ 3 được hiển thị - giáo trình java tóm tắt - awt
Hình 24 Frame với button thứ 3 được hiển thị (Trang 23)
Hình 25: Frame với grid bag layout - giáo trình java tóm tắt - awt
Hình 25 Frame với grid bag layout (Trang 24)
Hình 27: Các thành phần của menu - giáo trình java tóm tắt - awt
Hình 27 Các thành phần của menu (Trang 25)
Hình 26: Frame với hai kiểu layout manager - giáo trình java tóm tắt - awt
Hình 26 Frame với hai kiểu layout manager (Trang 25)
Hình 28: Menu - giáo trình java tóm tắt - awt
Hình 28 Menu (Trang 26)

TỪ KHÓA LIÊN QUAN

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN

w