Bài giảng Lập trình Java - Chương 6: Lập trình Menu với AWT

Mục tiêu

• Định nghĩa ñược Menu là gì?

• Biết cách tổ chức hệ thống menu của ứng

dụng.

• Biết cấu trúc các lớp liên quan ñến menu

trong gói java.awt

• Biết viết event handler cho hệ thống

menu.

pdf15 trang | Chuyên mục: Java | Chia sẻ: dkS00TYs | Lượt xem: 2328 | Lượt tải: 2download
Tóm tắt nội dung Bài giảng Lập trình Java - Chương 6: Lập trình Menu với AWT, để xem tài liệu hoàn chỉnh bạn click vào nút "TẢI VỀ" ở trên
1Chương 6
Lập trình Menu với AWT
Mục tiêu
• Định nghĩa ñược Menu là gì?
• Biết cách tổ chức hệ thống menu của ứng 
dụng.
• Biết cấu trúc các lớp liên quan ñến menu 
trong gói java.awt
• Biết viết event handler cho hệ thống 
menu. 
2Nội dung
6.1- Ôn tập.
6.2- Hệ thống Menu
6.3- Cấu trúc một hệ menu
6.4- Các tính chất của một mục chọn.
6.5- Gợi ý về thiết kế hệ thống menu cho ứng 
dụng.
6.6- Các lớp liên quan ñến menu trong gói awt.
6.7- Phím nóng của MenuItem
6.8- Chuỗi lệnh kết hợp 
6.9- Minh họa. 
6.1- Ôn tập
• Gói java.awt chứa các lớp giúp tạo ra GUI.
• Gói java.awt.event chứa các lớp về Event Object, chứa 
các EventListener interfaces.
• Object Status- Trạng thái : Tập trị thuộc tính của ñối 
tượng.
• Event: Tình huống có 1 ñối tượng bị ñổi trạng thái.
• Event object: Đối tượng ñược phát sinh ñộng khi 1 
object bị thay ñổi trạng thái.
• Event source: Đối tượng tạo ra event object.
• Listener : Đối yượng chờ và xử lý sự kiện cho event 
source.
3Ôn tập ...
• Cấu trúc quản lý event của một component:
(1) Tạo Listener.
(2) Viết code cho event handler.
(3) Component.addXXXListeneer(Listener);
• Listener có thể là:
(1) Chính Container chứa component.
(2) Một lớp inner của lớp Container.
(3) Một ñối tượng xxxListener + Code event handler là
thuộc tính của Container.
(4) Một ñối tượng thuộc lớp xxxAdapter + Code Event 
handler.
6.2- Hệ thống Menu là gì?
• Menu system- Hệ thống menu: Tập các 
mục chọn chức năng của ứng dụng ñược 
tổ chức phù hợp.
• Menu Item : Một mục chọn dạng chuỗi ký 
tự trong tập mục chọn.
• Hệ menu ñơn giản: một Choice, một danh 
sách nút lệnh.
• Hệ menu phức tạp: Menu phân cấp.
46.3-Cấu trúc một hệ menu
MenuBar Các Menu MenuItem
Thanh
phân
cách
6.4- Tính chất của một menu Item
• Label-Chuỗi mô tả.
• Shortcut key- Phím nóng ñược kết hợp.
• Enable/ Disable- Cho user tác ñộng?
• Action Command- Chuỗi tên lệnh ñược 
kết hợp.
• Ủy thác xử lý sự kiện : ActionListener
56.5- Gợi ý về thiết kế hệ thống menu
Bài toán có nhiều tác vụ
Phân nhóm
các tác vụ
Nhóm 1 Nhóm 2 Nhóm 3 (MenuBar chứa các Menu)
Tác vụ 11
Tác vụ 12
Tác vụ 13
Tác vụ 14
Tác vụ 21
Tác vụ 22
Tác vụ 23
Tác vụ 31
Tác vụ 32
Tác vụ 33
Tác vụ 34
Tác vụ 35
Tác vụ 36Một Menu chứa 
các MenuItem
Có thể thêm các thanh 
phân cách (Separator) 
ñể phân nhóm nhỏ hơn
6.6- Các lớp liên quan ñến menu 
trong gói AWT
66.6.1-Lớp MenuComponent
• Là lớp cha của các ñối tượng menu
• Constructor: MenuComponent(void)
6.6.2- Lớp MenuBar- Thanh ngang
• Contructor: 
MenuBar() – Tạo menu bar trống
76.6.3- MenuItem – một mục chọn
• Một mục chọn có thể lại là một nhóm. Thí
dụ:
MenuItem constructors
MenuItem() 
Constructs a new MenuItem with an 
empty label and no keyboard shortcut.
MenuItem(String label) 
Constructs a new MenuItem with the 
specified label and no keyboard shortcut.
MenuItem(String label, MenuShortcut s)
Create a menu item with an 
associated keyboard shortcut
8MenuItem methods
6.6.4- Lớp Menu – Nhóm MenuItem
• Lớp con của lớp MenuItem
• Constructors:
Menu()
Constructs a new menu with an empty label.
Menu(String label) 
Constructs a new menu with the specified label.
Menu(String label, boolean tearOff)
Constructs a new menu with the specified label, 
indicating whether the menu can be torn off.
9Menu class methods
6.6.5- Lớp CheckboxMenuItem
• CheckboxMenuItem chỉ hiển thị khi mục 
này ñược chọn.
• Constructors:
CheckboxMenuItem() 
CheckboxMenuItem(String label) 
CheckboxMenuItem(String label, 
boolean state) 
10
CheckboxMenuItem methods
• Ngoài các methods kế thừ từ lớp MenuItem, có thêm 
các methods:
void addItemListener(ItemListener l) 
void addNotify()
 getListeners
(Class listenerType) 
Object getSelectedObjects() 
boolean getState()
String paramString()
void removeItemListener(ItemListener )
void setState(boolean b) 
6.6.6- Lớp PopupMenu
• Là menu sẽ xuất khi ta kích chuột phải.
• Là lớp con của lớp java.awt.Menu
• Constructors:
PopupMenu() - Tạo ñối tượng popup menu 
trống.
PopupMenu (String label) - Tạo ñối tượng 
popup menu có nội dung
11
PopupMenu methods
Minh họa tạo PopupMenu...
class PopupMenuDemo extends Frame 
{
PopupMenu pMenu = new PopupMenu();
MenuItem mnuCopy = new MenuItem("Copy");
MenuItem mnuCut = new MenuItem("Cut");
MenuItem mnuPaste = new MenuItem("Paste");
PopupMenuDemo() // Constructor of a frame
{ ...
pMenu.add(mnuCopy); // setup popup menu
pMenu.addSeparator();
pMenu.add(mnuCut);
pMenu.addSeparator();
pMenu.add(mnuPaste);
// Add popup menu to the frame
this.add(pMenu);
12
Minh họa code hiển thị PopupMenu
// In constructor of a frame
// Add mouse Listener for showing popup menu
addMouseListener ( new MouseAdapter()
{ public void mouseReleased(MouseEvent e)
{ if (e.isPopupTrigger()) // check right clicked
pMenu.show(e.getComponent(),
e.getX(),e.getY());
}
} );
The
right-clicked 
position
Minh họa code quản lý biến cố cho các mục 
chọn trong popupmenu
ActionListener actListener = new ActionListener()
{ public void actionPerformed(ActionEvent e)
{ Object src=e.getSource();
if (src==mnuCopy) 
LblStatus.setText("menu Copy is selected");
if (src==mnuCut) 
LblStatus.setText("menu Cut is selected");
if (src==mnuPaste) 
LblStatus.setText("menu Paste is selected");
}
};
mnuCopy.addActionListener(actListener);
mnuCut.addActionListener(actListener);
mnuPaste.addActionListener(actListener);
13
6.7 Phím nóng của MenuItem
• Shortcut Key: Tổ hợp Ctrl+ Phím sẽ tác ñộng 
vào 1 mục chọn tương tự như kích chuột vào 1 
mục menu.
• Lớp java.awt.MenuShortcut giúp mô tả các phím 
nóng.
• Lớp java.awt.event.KeyEvent ñịnh nghĩa sẵn 
các phím
• Ấn ñịnh phím nóng cho MenuItem: 
MenuShortcut CtrlN = new MenuShortcut(KeyEvent.VK_N));
mnuNew.setShortcut(CtrlN); // Ctrl + N
mnuOpen.setShortcut(new MenuShortcut(KeyEvent.VK_O));
6.8- Chuỗi lệnh kết hợp
• Action Command string: Một chuỗi ñược gán cho 1 nút 
lệnh hay 1 mục menu.
mnuNew.setActionCommand("New Command");
• Các command string của các ñối tượng phải khác 
nhau
• Có thể quản lý sự kiện bằng command string.
public void actionPerformed(ActionEvent e)
{ String CommandStr= e.getActionCommand();
if (CommandStr.equals("New Command")) 
{ 
}
.....
}
14
6.9-Minh họa
• Minh họa 1- Tạo menu bar, thiết lập 
Shortcut key, quản lý các mục chọn bằng 
e.getSource()
• Minh họa 2- Tạo menu bar, quản lý cac1 
mục chọn bằng e.getActionCommand()
• Minh họa 3- Tạo và quản lý PopupMenu
Minh họa 1
Demo
15
Minh họa 2-
Vẫn thí dụ trước nhưng
Quản lý sự kiện với Action Command
Demo
Minh họa 3- PopupMenu
Demo

File đính kèm:

  • pdfBài giảng Lập trình Java - Chương 6_Lập trình Menu với AWT.pdf
Tài liệu liên quan