Lập trình Menu với AWT
Chia sẻ bởi Nguyễn Việt Vương |
Ngày 29/04/2019 |
86
Chia sẻ tài liệu: Lập trình Menu với AWT thuộc Bài giảng khác
Nội dung tài liệu:
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.
Nộ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.
Ô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.
6.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
6.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ụ 36
Mộ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
6.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
6.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
MenuItem 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.
Menu 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)
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
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);
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);
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"))
{
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.
Nộ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.
Ô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.
6.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
6.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ụ 36
Mộ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
6.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
6.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
MenuItem 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.
Menu 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)
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()
(Class
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
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);
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);
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"))
{
}
.....
}
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
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
* Một số tài liệu cũ có thể bị lỗi font khi hiển thị do dùng bộ mã không phải Unikey ...
Người chia sẻ: Nguyễn Việt Vương
Dung lượng: |
Lượt tài: 5
Loại file:
Nguồn : Chưa rõ
(Tài liệu chưa được thẩm định)