Menu trong Java Swing (Bài 4) – Gia Sư Tin Học

Menu trong java swing. Một hệ thống menu cung cấp một thanh menu (Menu Bar) bên dưới thanh tiêu đề của cửa sổ. Thanh menu này chứa nhiều item và được gọi là Menu. Khi chúng ta click vào một menu, nó sẽ hiện ra và hiển thị các lựa chọn khác nhau và được gọi là Menu Item.

Khi chúng ta click chuột phải (right-click) trên màn hình, một Menu chứa các Menu Item xuất hiện bên cạnh nơi mà chúng ta nhấp chuột và được gọi là Popup Menu. Hình bên dưới là một ví dụ về Menu trong java swing.

Menu trong java swing – JMenuBar

JMenuBar là một class và được sử dụng để tạo một thanh menu. Một thanh menu chứa một hoặc nhiều item, ví dụ File, Edit, View, …

Tạo menu bar trong NetBeans

Lưu ý: Mặc định sẽ có 2 Menu được tạo là File và Edit.

Menu trong java swing – JMenu

JMenu là một class được sử dụng để tạo một menu trên thanh menu. Khi chúng ta click vào JMenu, nó sẽ hiển thị một hoặc nhiều item. Và để thêm JMenu vào JMenuBar, chúng ta sử dụng phương thức add() của lớp JMenuBar.

Tạo menu trong NetBeans

Thay đổi text cho Menu

Menu trong java swing – JMenuItem

JMenuItem là một class được sử dụng để tạo ra một item và gắn vào JMenu. Khi người dùng click vào một menu item, nó sẽ phát sinh một sự kiện là performed. Điều này tương tự như JButton mà chúng ta đã được tìm hiểu ở bài học giới thiệu về Swing.

Tạo menu item trong NetBeans

Tuỳ chỉnh menu item

Lưu ý chúng ta có thể tạo sub menu bằng cách trong menu gắn thêm menu khác. Hình bên dưới là một ví dụ

Đăng ký sự kiện cho Menu item (Cách đăng ký được thực hiện tương tự như Button)

Menu trong java swing – JPopupMenu

JPopupMenu là menu được xuất hiện khi người dùng right click vào một container như JFrame, JPanel, … Trong JPopupMenu cũng chứa các menu item cho phép người dùng lựa chọn.

Tạo popup menu trong NetBeans

Trong cửa sổ Navigator xuất hiện JPopupMenu

Thiết kế popup menu

Đăng ký và xử lý sự kiện cho popup menu

Viết xử lý cho phương thức formMouseReleased mà NetBeans đã phát sinh code

private void formMouseReleased(java.awt.event.MouseEvent evt) {
 if(evt.isPopupTrigger()) {
    jPopupMenu2.show(this, evt.getX(), evt.getY());
 }
}

Lưu ý jPopupMenu2 là tên của JPopupMenu mà chúng ta đã tạo trong quá trình thiết kế

Khi chạy ứng dụng và right click vào một vị trí bất kỳ trong JFrame, chúng ta sẽ thấy kết quả như hình sau

Đăng ký sự kiện cho Menu item:thực hiện tương tự như Button

Menu trong java swing – JToolBar

JToolBar thì tương tự như menu bar và chứa nhiều JButton hoặc các thành phần swing khác. Hình bên dưới là cách tạo tool bar trong NetBeans

Thiết lập icon cho button trong tool bar

Các bạn có thể tải bộ icon cho button

Menu trong java swing – JFileChooser

Một JFileChooser là một hộp thoại chuẩn được sử dụng để cho phép người dùng lựa chọn một thư mục hoặc một tập tin. Có 3 loại hộp thoại tương ứng với 3 phương thức của lớp JFileChooser được liệt kê trong bảng sau

Phương thứcHộp thoạipublic int showSaveDialog(Component parent)Lưu filepublic int showOpenDialog(Component parent)Mở filepublic int showDialog(Component parent, String approveButtonLabel)Được phép tuỳ chỉnh cho nút OK

Xử lý mẫu cho hộp thoại lưu file (showSaveDialog)

(Lưu ý thay phần in đậm màu đỏ thành nội dung mà bạn muốn lưu xuống file)

private void saveAction() {
 JFileChooser jfc = new JFileChooser();
 int ret = jfc.showSaveDialog(this);
 File f = null;
 if (ret == JFileChooser.APPROVE_OPTION) {
   f = jfc.getSelectedFile();
 } else {
   return;
 }
 try {
   FileWriter fw = new FileWriter(f);
   fw.write("Nội dung mà chúng ta muốn lưu");
   fw.flush();
   fw.close();
   JOptionPane.showMessageDialog(this, "Saved data successfully");
 } catch (Exception ex) {
   JOptionPane.showMessageDialog(this, ex.toString());
 }
}

Xử lý mẫu cho hộp thoại mở file (showOpenDialog)

(Lưu ý dữ liệu sau khi đọc từ file đang được chứa trong biến data, phần in đậm màu đỏ)

private void openAction() {
 JFileChooser jfc = new JFileChooser();
 int ret = jfc.showOpenDialog(this);
 File f = null;
 if (ret == JFileChooser.APPROVE_OPTION) {
   f = jfc.getSelectedFile();
 } else {
   return;
 }
 try {
   FileReader fr = new FileReader(f);
   BufferedReader br = new BufferedReader(fr);
   String data = br.readLine();
   fr.close();
   br.close();
 } catch (Exception ex) {
   JOptionPane.showMessageDialog(this, ex.toString());
 }
}

Menu trong java swing – Bài tập thực hành

Câu 1: Thiết kế giao diện ứng dụng

File menu

Setting menu

Help menu

Câu 2: Viết xử lý

2.1. Khi người dùng chọn Open menu, hiển thị hộp thoại cho phép người dùng chọn một tập tin txt và đọc nội dung tập tin đó hiển thị ra màn hình

2.2. Khi người dùng chọn Exit menu, ứng dụng sẽ bị đóng (Ứng dụng sẽ hiển thị hộp thoại xác nhận hay không còn tuỳ thuộc vào Confirm exit menu có được chọn?)

2.3. Popup menu cho phép người dùng thiết lập màu chữ và đóng ứng dụng

2.4. Khi người dùng chọn nút “Save“, ứng dụng sẽ hiển thị hộp thoại cho phép người dùng lựa chọn nơi lưu tập tin.

2.5 Xử lý tool bar

Hộp thoại xác nhận khi đóng ứng dụng. Ứng dụng sẽ bị đóng nếu người dùng chọn Yes.

2.6. Xử lý cho Setting menu

Confirm exit, RedBlue xử lý tương tự như Confirm exit của tool barRed/Blue của popup menu