Lập trình java - Bài 20: Menu và các thành phần GUI nâng cao

Lập trình java - Bài 20: Menu và các thành phần GUI nâng cao

 Menu và các thành phần GUI nâng cao trong lập trình java

Nội dung bài học

JMenu
JMenuBar
JMenuItem
JPopupMenu
JToolBar
JList
JComboBox
JTable
JTree

MenuBar và ToolBar 

MenuBar và ToolBar trong lập trình java

JMenu

JMenu có thể được dùng giống như một layout ,để quản lý các Component

Chú ý:

Chỉ được phép có 1 lựa chọn tại 1 thời điểm

Icon có thể dùng để thay thế cho các menu items

Hầu hết các component chuẩn đều có thể là Menu Item (radio button...)

Có thể gán phím tắt cho các Menu Item

JMenu trong lập trình java

SingleSelectionModel Interface

Có chứa 1 mảng các lựa chọn có thể và tại mỗi thời điểm chỉ được chọn duy nhất 1 lựa chọn

SingleSelectionModel sẽ nắm giữ vị trí của chọn lựa hiện tại, nếu có sự thay đổi, ChangeEnvent sẽ được bắt

Các thuộc tính của lớp SingleSelectionModel

SingleSelectionModel Interface trong lập trình java

Khởi tạo

JMenu()

Khởi tạo một menu mới không có tiêu đề

JMenu(Action a)

Khởi tạo một menu mới với các thuộc tính lấy từ Action a.

JMenu(String s)

Khởi tạo một menu mới với tiêu đề là s

JMenu(String s, boolean b)

Khởi tạo một menu mới với tiêu đề là s và qui định là một menu tách rời hay không.

Events: ChangeEvent

void addChangel_istener(Changel_istener listener)

void removeChangeListener(ChangeListener listener)

  Các phương thức

JMenuItem: add(Action a)

Component: add(Component c)

Component: add(Component c, int index)

JMenuItem: add(JMenuItem menuItem)

JMenuItem: add(String s)

void: addMenuListener(MenuListener l)

void: addSeparator()

void: applyComponentOrientation(ComponentOrien tation o)

PropertyChangeListener: createActionChangeListener(JMenuItem b)

JMenuItem:                 createActionComponent(Action a)

JMenu.WinListener: createWinListener(JPopupMenu p)

void:                         doClick(int pressTime)

void:                         fireMenuCanceled() .

void:                         fireMenuDeselected()

void:                         fireMenuSelected()

AccessibleContext: getAccessibleContext()

Component:         getComponent() .

int:                         getDelay()

JMenuItem:         getItem(int pos)

int:                         getItemCount()

Component:         getMenuComponent(int n)

int:                         getMenuComponentCount()

Component[]: getMenuComponents()

MenuListener[]: getMenuListeners()

JPopupMenu: getPopupMenu()

Point:                 getPopupMenuOrigin()

MenuElement[]: getSubElements()

String:         getUIClassID()

JMenuItem: insert(Action a, int pos)

JMenuItem: insert(JMenuItem mi, int pos)

void:         insert(String s, int pos)

void:         insertSeparator(int index)

boolean:         isMenuComponent(Component c)

boolean:         isPopupMenuVisible()

boolean: isSelected()

boolean: isTearOff()

boolean: isTopLevelMenu()

void: menuSelectionChanged(boolean isIncluded)

String: paramString()

void: processKeyEvent(KeyEvent evt)

void: remove(Component c)

void: remove(int pos)

void:       remove(JMenuItem item)

void: removeAll()

void: removeMenuListener(MenuListener l)

void: setAccelerator(KeyStroke keyStroke)

void: setComponentOrientation(ComponentOrientationo)

void: setDelay(int d)

void: setMenuLocation(int x, int y)

void: setModel(ButtonModel newModel)

void: setPopupMenuVisible(boolean b)

void: setSelected(boolean b)

void: updateUI()

JMenuBar

Dùng để tạo ra 1 Menu bar theo chiều ngang của component với 0, 1 hoặc nhiều phần tử gắn lên đó

Bạn sẽ dùng phương thức add để thêm vào các JMenu trên JMenuBar

JMenubar sẽ hiển thị các JMenu theo thứ tự từ trái sang phải.

Khởi tạo

JMenuBar()

Sự kiện

ActionListener

Các phương thức

JMenu:         add(JMenu c)

void: addNotify()

AccessibleContext: getAccessibleContext()

Component: getComponent()

int:                   getComponentIndex(Component c)

JMenu: getHelpMenu()

Insets: getMargin()

JMenu: getMenu(int index)

int: getMenuCount()

SingleSelectionModel: getSelectionModel()

MenuElement[]: getSubElements()

MenuBarUI: getUI()

String: getUIClassID()

boolean: isBorderPainted()

boolean: isSelected()

void: menuSelectionChanged(boolean isIncluded)

void: paintBorder(Graphics g)

String: paramString()

boolean: processKeyBinding(KeyStroke ks, KeyEvent e, int condition, boolean pressed)

void: processKeyEvent(KeyEvent e, MenuElement[] path, MenuSe lectionManager manager)

void: processMouseEvent(MouseEvent event, MenuElement[] path, MenuSelectionManager manager)

void: removeNotify()

void: setBorderPainted(boolean b)

void: setHelpMenu(JMenu menu)

void: setMargin(Insets m)

void: setSelected(Component sel)

void: setSelectionModel(SingleSelectionModel model)

void: setUI(MenuBarUI ui)

void: updateUI()

  Bạn có thể gắn 1 menu bar lên frame theo 1 trong 2 cách sau:

Sử dụng setJMenuBar()

JFrame frame = new JFrame;

JMenuBar menuBar = new JMenuBar(); frame.setJMenuBar(menuBar);

Dùng layout để định vị

menuBar.setBorder(new BevelBorder(BevelBorder.RAISED)); frame.getContentPane( ).add(menuBar, BorderLayout.SOUTH);

Ví dụ: Tạo 2 menu “A menu” và “Another Menu” trên JMenuBar và gán phím tắt

JMenuBar trong lập trình java
Ví dụ: Tạo 2 menu “A menu” và “Another Menu” trên JMenuBar và gán phím tắt
JMenuBar Demo trong lập trình java

JMenuItem

Cung cấp nhiều lớp bao dùng đề chuyền 1 string hay 1 icon thành 1 JMenultem
JMenultem là 1 loại nút đặc biệt(xử lý mouseListenner)
Khởi tạo
JMenuItem()
Khởi tạo một JMenuItem không có tiêu đề và icon.
JMenuItem(Action a)
Khởi tạo một menu item với thuộc tính là a.
JMenuItem(Icon icon)
Khởi tạo một JMenuItem với icon.
JMenuItem(String text)
Khởi tạo một JMenuItem với tiêu đề là text.
JMenuItem(String text, Icon icon)
Khởi tạo một JMenuItem với tiêu đề và icon.
JMenuItem(String text, int mnemonic)
Khởi tạo một JMenuItem với tiêu đề và phím tắt
void: actionPropertyChanged(Action action, String propertyName)
void: addMenuDragMouseListener(MenuDragMouseListener l)
void: addMenuKeyListener(MenuKeyListener l)
void: configurePropertiesFromAction(Action a)
void: fireMenuDragMouseDragged(MenuDragMouseEvent event)
void: fireMenuDragMouseEntered(MenuDragMouseEvent event)
void: fireMenuDragMouseExited(MenuDragMouseEvent event)
void: fireMenuDragMouseReleased(MenuDragMouseEvent event)
void: fireMenuKeyPressed(MenuKeyEvent event)
void: fireMenuKeyReleased(MenuKeyEvent event)
void: fireMenuKeyTyped(MenuKeyEvent event)
KeyStroke:                 getAccelerator()
AccessibleContext: getAccessibleContext()
Component:                 getComponent()
MenuDragMouseListener[]: getMenuDragMouseListeners()
MenuKeyListener[]: getMenuKeyListeners()
MenuElement[]]:         getSubElements()
String:                         getUIClassID()
void:                         init(String text, Icon icon)
boolean:                          isArmed()
void: menuSelectionChanged(boolean isIncluded)
String: paramString()
void: processKeyEvent(KeyEvent e, MenuElement[] path, MenuSele ctionManager manager)
void: processMenuDragMouseEvent(MenuDragMouseEvent e)
void: processMenuKeyEvent(MenuKeyEvent e)
void: processMouseEvent(MouseEvent e, MenuElement[] path, Me nuSelectionManager manager)
void: removeMenuDragMouseListener(MenuDragMouseListener l)
void: removeMenuKeyListener(MenuKeyListener l)
void: setAccelerator(KeyStroke keyStroke)
void: setArmed(boolean b)
void: setEnabled(boolean b)
void: setModel(ButtonModel newModel)
void: setUI(MenuItemUI ui)
void: updateUI()
Ví dụ:
JMenu fileMenu = new JMenu("File");
JMenuItem newMenuItem = new JMenuItem("New"); fileMenu.add(newMenuItem);
JMenuItem closeMenuItem = new JMenuItem("Close"); fileMenu.add(closeMenuItem); fileMenu.addSeparator();

JPopupMenu

Là một loại menu đặc biệt mà không cần phải gắn vào menu bar
Nó có thể được hiển thị ở bất cứ vị trí nào trên thành phần chứa.
Bạn có thể thêm, chèn một JMenultem, 1 component hay 1 Action tuy ý vào popup menu này với phương thưc add() và insert()
JPopupMenu sẽ gán cho mỗi menu item 1 số thứ tự rồi gắn chúng vào popup menu theo layout mà nó có
Bạn cũng có thể thêm 1 separator vào popup menu với phương thức addSeparator()
 Khởi tạo
public JPopupMenu()
public JPopupMenu(String title)
public JMenultem add(JMenultem menultem) public Component add(Component c)
public JMenultem add(Action a)
public JMenultem insert(Action a, int index)
public Component insert(Component component, int index)
public void addSeparator()
  Để hiển thị popup menu dùng phương thức show() 
public void processMouseEvent(MouseEvent e) {
if (e.isPopupTrigger()) {
popup.show(this, e.getX(), e.getY());
 } else {
super.processMouseEvent(e);
}
Events: PopupMenuEvent.
Dùng để báo cho các listener về việc ẩn, hiện hay hủy bỏ popup menu
Khởi tạo
public PopupMenuEvent(Object source)
Sử dụng PopupMenuEvent trong 2 trường hợp sau:
Menu hiện <=> ẩn
Loại bỏ 1 lựa chọn
public void addPopupMenuListener(PopupMenuListener I)
public void removePopupMenuListener(PopupMenuListener I)
  public void addPopupMenuListener(PopupMenuListener I)
public void removePopupMenuListener(PopupMenuListener I)
PopupMenuListener Interface
Là nơi tiếp nhận PopupMenuEvent
public abstract void
popupMenuCanceled(PopupMenuEvent e)
public abstract void popupMenuWillBecomelnvisible(PopupMenuEvent e)
public abstract void popupMenuWillBecomeVisible(PopupMenuEvent e)
JPopupMenu trong lập trình java

JToolBar

Là lớp chứa cho nhiều thành phần khác
Khi 1 component được gắn vào tool bar nó sẽ được định vị từ trái sang phải theo chỉ mục của nó
Khởi tạo
JToolBar()
Khởi tạo một tool bar; Chiều mặc định nằm ngang.
JToolBar(int orientation)
Khởi tạo một tool bar với chiều ngang/dọc.
JToolBar(String name)
Khởi tạo một tool bar với tên gọi name.
JToolBar(String name, int orientation)
Sự kiện
Dùng Sự kiện PropertyChangeEvent khi có 1 sự thay đổi giá trị của các thuộc tính
JButton: add(Action a)
protected void: addImpl(Component comp, Object constraints, int index)
void: addSeparator()
void: addSeparator(Dimension size)
protected PropertyChangeListener: createActionChangeListener(JButton b)
protected JButton: createActionComponent(Action a)
AccessibleContext: getAccessibleContext()
Component: getComponentAtIndex(int i)
int:                 getComponentIndex(Component c)
Insets:         getMargin()
int:                 getOrientation()
ToolBarUI: getUI()
String:         getUIClassID()
boolean:         isBorderPainted()
boolean: isFloatable()
boolean: isRollover()
protected void: paintBorder(Graphics g)
protected String: paramString()
void: setBorderPainted(boolean b)
void: setFloatable(boolean b)
void: setLayout(LayoutManager mgr)
void: setMargin(Insets m)
void: setOrientation(int o)
void: setRollover(boolean rollover)
void: setUI(ToolBarUI ui)
void: updateUI()
Danh sách 
Thường dùng để liệt kê
Java co 2 loại danh sách cơ bản:
JList: dùng cho danh sách có các khoản mục cố định Người sử dụng có thể chọn một hoặc nhiều mục
JComboBox: dùng cho danh sách mà người dùng có thể lựa chọn mục nhập
JList
  Một JList trình bày cho người dùng một nhóm các item, thể hiện trên một hoặc nhiều cột để lựa chọn.
JList thường có nhiều item, vì vậy chúng được đặt trong một ScrollPane
JList trong lập trình java

Khởi tạo
JList()
Khởi tạo một JList rỗng,chỉ đọc.
JList(E[] listData)
Khởi tạo một JList hiển thị các phần tử trong mảng E.
Ví dụ:
Ví dụ về JList trong lập trình java

JComboBox

Là thành phần cho phép người dùng chọn một item từ một danh sách item, có 2 loại JComboBox
JComboBox mặc định là dạng không chỉnh sửa được, người dùng chỉ được phép chọn từ danh sách
JComboBox trong lập trình java

Loại thứ 2 là JComboBox chỉnh sửa được, người dùng gõ vào vùng text hoặc chọn từ danh sách
JComboBox trong lập trình java

Khởi tạo
JComboBox()
Tạo một ComboBox với dữ liệu mặc định
JComboBox(E[] items)
Tạo một ComboBox chứa các item trong mảng E
Ví dụ:
Code JComboBox trong lập trình java

JTable

Là thành phần để hiển thị các bảng dữ liệu, (tùy chọn) cho người dùng chỉnh sửa dữ liệu
JTable trong lập trình java

Khởi tạo
JTable()
Khởi tạo một bảng kích thước 1x1
JTable(int numRows, int numColumns)
Khởi tạo một bảng với kích thước numRows x numColumns
JTable(Object[][] rowData, Object[] columnNames)
Khởi tạo một mảng 2 chiều (rowData) với tên các cột (columnNames)
Ví dụ
Ví dụ Code JTable trong lập trình java

JTree

Với lớp JTree, bạn có thể hiển thị dữ liệu phân cấp.
Một đối tượng JTree không thực sự chứa dữ liệu của bạn; nó chỉ đơn giản là cung cấp một cái nhìn của các dữ liệu.
JTree trong lập trình java


Như hình vẽ, JTree hiển thị dữ liệu theo chiều dọc. Mỗi hàng được hiển thị bởi các cây có chứa chính xác một mục dữ liệu, được gọi là một nút. Mỗi cây có một nút gốc nút gốc duy nhất.
Một nút có thể hoặc là có con hay không. Các nút có nút con gọi là các nút nhánh. Các nút mà không có nút con gọi là các nút lá.
Một nút nhánh có thể có nhiều nút con. Để xem các nút con của một nhánh, ta bấm vào dấu “mở rộng”. Một chương trình có thể phát hiện những thay đổi trong trạng thái mở rộng các nút nhánh
Một nút cụ thể trong một cây được xác định, hoặc bởi một TreePath, một đối tượng mà đóng gói một nút, hoặc bởi hàng đặc trưng của nó, trong đó mỗi hàng trong khu vực hiển thị sẽ hiển thị một nút
  Khởi tạo
JTree(Object[] value)
Khởi tạo một JTree với các thành phần của mảng Object là nút con, nút gốc chưa được xác định
JTree(TreeNode root)
Khởi tạo một JTree với nút gốc là root
  Ví dụ: Tạo một nút gốc, khởi tạo JTree từ nút gốc vừa tạo và đặt Tree vào một Scroll Pane
Code JTree trong lập trình java

Code JTree trong lập trình java
Một số Phương thức
node.add()
node.remove()
node.removeAllChildren()
node.getChildCount()
node.getChildAt()
node.getParent()
node.setParent()
node.removeFromParent()
node.getUserObject()
node.setUserObject()
model.getRoot()
model.setRoot()
Sự kiện
TreeExpansion, TreeSelection, TreeWillExpand
 XIN CẢM ƠN!


ĐĂNG NHẬN XÉT

Previous Post Next Post