•Lựa chọn 1 container: Frame, Window, or
Applet
•Tạo các điều khiển (buttons, text areas )
• Đưa các điều khiển vào vùng chứa
•Sắp xếp các điều khiển(layout)
• Thêm các xử lý sự kiện (Listeners)
•AWT viết tắt của Abstract Windowing
Toolkit
•AWT làtập hợp các lớp Java cho phép
chúng ta tạo một GUI
• Cung cấp các mục khác nhau để tạo hoạt
động và hiệu ứng GUI
• import java.awt.*;
import java.awt.event.*;
• Containers
• Components
• Layout managers
• Graphics và drawing capabilities
• Fonts
•Events
AW TEvent
Font
FontMetrics
Component
G raphics
Object Color
Canvas
Button
TextComponent
Label
List
•Làlớpconcủa Windows
• Được hiển thị trong một cửa sổ và có đường
viền
• javax.awt.Frame
import java.awt.Frame;
public class MyWindow {
public static void main(String[] args) {
Frame frame = new Frame("My First Window");
frame.setSize ( 400, 300 );
frame.setVisible( true );
}
}
import java.awt.Frame;
public class MyWindow {
public static void main(String[] args) {
Frame frame = new Frame("My First Window");
frame.setSize ( 400, 300 );
frame.setVisible( true );
}
}
screen
screen
• java.awt.Frame
–kíchthướcmặc định: bằng thanh tiêu đề
–vị trí mặc định: (0,0)
MyWindow
MyWindow
height
screen height
y
•2.cóthể gắn panel vào:
a) frames
b) panels khác
public Panel( java.awt.LayoutManager )
tạo panel với layout manager.
public Panel()
tạo panel vớibộ trình bày mặc định FlowLayout.
public Panel( java.awt.LayoutManager )
tạo panel với layout manager.
public Panel()
tạo panel vớibộ trình bày mặc định FlowLayout.
• java.awt.Panel
–Vídụ microwave GUI
Button
Button
TextField
TextField
12 Button
12 Button
Panel(GridLayout)
Panel(GridLayout)
Panel(BorderLayout)
Panel(BorderLayout)
Frame(BorderLayout)
Frame(BorderLayout)
•Làmột lớpconcủa lớp Window
• Đối tượng dialog được cấu trúc như sau
:
Frame myframe = new Frame(“My frame”);
String title = “Title”;
List
Scrollbar
TextField
TextArea
CheckboxGroup
Checkbox
• Gắn component vào khung chứa:
objectName.add(… );
• Lấy thông tin của component:
objectName.getxxx( );
• Gán thông tin cho component:
objectName.setxxx( );
• Được dùng để hiển thị chuỗi(String)
• Các hàm dựng:
– Label( )
– Label(String labeltext)
– Label(String labeltext, int alignment)
•Cácphương thức:
– setFont(Font f)
– setText(String s)
– getText( )
import java.awt.*;
class AcceptName extends Frame
{
TextField txtName = new TextField(20);
Label lblName = new Label("Name :");
public AcceptName (String title)
{
super(title);
setLayout(new FlowLayout());
– Chỉ ra số dòng hay số cột(tùychọn)
– Chỉ ra vị trí của điềukhiểntrênmànhình
• Các hàm dựng:
– TextArea( )
– TextArea(int rows, int cols )
– TextArea(String text)
– TextArea(String text, int rows, int cols)
• setText(String)
• getText( )
• setEditable(boolean)
• isEditable( )
• insertText(String, int)
• replaceText(String, int, int)
addWindowListener(new WindowAdapter()
{
public void windowClosing(WindowEvent we)
{
setVisible(false);
System.exit(0);
}
});
}
public static void main(String args[])
{
TextComments ObjComment = new TextComments("Testing components!");
ObjComment.setSize(200,200);
ObjComment.show();
}
}
import java.awt.*;
}
public static void main(String args[])
{
ButtonTest ObjTest = new ButtonTest("The three little buttons!");
ObjTest.setSize(500,500);
ObjTest.show();
}
}
import java.awt.*;
import java.awt.event.*;
class ButtonTest extends Frame
{
Button btnBread = new Button("Bread!");
Button btnButter = new Button("Butter!");
Button btnJam = new Button("Jam!");
public ButtonTest(String title)
{
super(title);
setLayout(new FlowLayout());
add(btnBread);
add(btnButter);
add(btnJam);
Output
• Checkboxes được dùng khi cho phép user nhiềucọn
chọnlựa
• Radiobuttons được dùng để user chỉ ra mộtlựachọn
duy nhất
•Cácbước để tạo checkbox hoặc radiobutton:
– Tạomộtphầntử (element)
– Khởitạogiátrị ban đầu(cógiátrị selected hay unselected)
Checkbox cboxMus = new Checkbox("Music",false);
Checkbox cboxPaint = new Checkbox("Painting",false);
Checkbox cboxMovie = new Checkbox("Movies",false);
Checkbox cboxDance = new Checkbox("Dancing",false);
Label lblQts = new Label("What's your hobby?" );
public Hobbies(String str )
{
super(str);
setLayout(new GridLayout(6,1));
add(lblQts);
add(cboxRead);
add(cboxMus);
add(cboxPaint);
add(cboxMovie);
add(cboxDance);
Output
import java.awt.*;
import java.awt.event.*;
class Qualification extends Frame
{
CheckboxGroup cg = new CheckboxGroup();
Checkbox radUnder = new Checkbox("Undergraduate",cg,false);
Checkbox radGra = new Checkbox("Graduate",cg,false);
Checkbox radPost = new Checkbox("Post Graduate",cg,false);
Checkbox radDoc = new Checkbox("Doctorate",cg,false);
Label lblQts = new Label("What's your primary qualification?" );
public Qualification(String str)
{
super(str);
setLayout(new GridLayout(6,1));
–Chỉ ra vị trí trên màn hình
–Hiểnthị ra màn hình
•Vídụ
Choice colors=new Choice( );
colors.addItem(“Red”);
colors.addItem(“Green”);
addWindowListener(new WindowAdapter()
{
public void windowClosing(WindowEvent we)
{
setVisible(false);
System.exit(0);
}
});
}
public static void main(String args[])
{
Stars ObjStar = new Stars ("A sky full of stars!");
ObjStar.setSize(400,400);
ObjStar.show();
}
}
import java.awt.*;
import java.awt.event.*;
class Stars extends Frame
{
Choice moviestars = new Choice();
Label lblQts = new Label("Who is your favorite movie star?");
public Stars(String str)
{
• Trình quản lý này có thể xắp xếp đến5 thành
phần trong container
• Các thành phầncóthể được đặt vào 5 hướng
NORTH, EAST, SOUTH, WEST và CENTER
của container
• Ví dụ: Để thêm một thành phần vào vùn
g
North của container
Button b1= new Button(“North Button”);
setLayout(new BorderLayout( ));
add(b1, BorderLayout.NORTH);
•Cóthể lưutrữ một danh sách các kiểulayout
khác nhau
•Mỗilayout được xem như mộtthẻ (card)
•Thẻ thường là đối tượng Panel
•Một thành phần độclậpnhư button sẽ điều
khiển các thẻ được đặt ở phía trên nhất
•Cácbước để tạo CardLayout:
– Bố trí layout của panel chính là CardLayout
– Lần lượt thêm các panel khác vào panel chính
•Hỗ trợ việc chia container thành một lưới
• Các thành phần đượcbố trí trong các
dòng và cột
•Mộtô lướinênchứaítnhấtmột thành
phần
•Kiểu layout này được sử dụng khi tấtcả
các thành phầncócùngkíchthước
• Hàm constructor
GridLayout gl = new GridLayout(no. of rows,
•Mỗi event listener cung cấp các phương
thức để xử lý các sự kiệnnày
•Lớpcócài đặt listener cần định nghĩanhững
phương thức này
•Cácbướccầntuânthủđểsử dụng mô hình
Event Listener:
– Cài đặt Listener tương ứng
– Nhậndiện đượctấtcả các thành phầntạorasự
kiện
– Nhậndiện đượctấtcả các sự kiện đượcxử lý
– Cài đặt các phương thứccủa listener, và viếtcác
đoạnmãđể xử lý sự kiện trong các phương thức
đó
• Interface định nghĩa các phương thức khác
nhau để xử lý mỗi sự kiện
• ActionEvent
• AdjustmentEvent
• ComponentEvent
• FocusEvent
• ItemEvent
• WindowEvent
• TextEvent
• MouseEvent
•KeyEvent
ActionListener
AdjustmentListener
ComponentListener
FocusListener
ItemListener
WindowListener
•Phương thức để vẽ hoặchiểnthị các ký tự
trên frame
Cú pháp
– drawChars(char array[ ], int offset, int length,
int xCoor, int yCoor);
•Phương thức để vẽ hoặchiểnthị bytes trên
frame
Cú pháp
– drawBytes(byte array[ ], int offset, int length,
int xCoor, int yCoor);
ẽ ể
•Phương thức đượcsử dụng để vẽ
đường thẳng như sau
Cú pháp
– drawLine(int x1, int y1, int x2, int y2);
• Các phương thức đượcsử dụng để vẽ
đường tròn như sau
Cú pháp
– drawOval(int xCoor, int yCoor, int width,
int height);
– setColor(Color c);
– fillOval(int xCoor, int yCoor, int width, int
height);
•Phương thứcsử dụng để vẽ hình vuông:
Cú pháp
– drawRect(int xCoor, int yCoor, int width, int
height);
– fillRect(int xCoor, int yCoor, int width, int
height);
• Các phương thức đượcsử dụng để vẽ
•Bảng các giá trị màu
0-255Green
0-255Blue
0-255Red
RangeElement
Cú pháp củahàmdựng để tạomộtmàu
color(int red, int green, int blue);
•Bảng trình bày các giá trị màu RGB thôn
thường
2550255Magenta
0255255Yellow
0200255Orange
175175255Pink
000Black
646464Dark Gray
128128128Gray
192192192Light Gray
255255255White
BlueGreenRedColor
• Gói java.awt package cung cấpbởilớp
‘Font’
• Các phương thứccủalớpFont:
– getAllFont( )
– getLocalGraphicsEnvironment( )
– getFont( )
– getFontList( )
•Hàmdựng Font nhận3 thamsố
– Tên font trong chuổi định dạng; tên này
có trong phương thức getFontList( ).
– Kiểucủa font. Ví dụ như: Font.BOLD,