Thành phần Menu

Một phần của tài liệu Bài giảng ngôn ngữ lập trình Java doc (Trang 126 - 129)

Lớp JMenuBar cài đặt thanh thực đơn và trong đú cú thể chứa cỏc thực đơn pull-down. Cỏc JMenuBar được tạo ra để gắn vào một của sổ JFrame bằng một lệnh gọi:

JMenuBar menuBar = new JMenuBar();

JFrame frm = new JFrame(“Day la mot Frame”);

frm.setJMenuBar(menuBar); // MenuBar này chưa cú phần tử nào

Sau khi cú MenuBar, ta cần thờm vào đú cỏc JMenu là cỏc mục trờn thanh Menu, khi người dựng chọn vào đú sẽ sổ xuống danh sỏch cỏc mục chọn khỏc.

JMenu file = new JMenu(“File”);

Ta đặt cho nú một phớm tắt, vớ dụ là ‘F’ để khi ấn Alt + F thỡ JMenu này được kớch hoạt: file.setMnemonic('F');

Sau đú thỡ thờm nú vào JMenuBar: menuBar.add(file);

Bõy gời là lỳc ta cài đặt cỏc mục chọn trong một JMenu. Java dựng lớp JMenuItem định nghĩa từng mục của thực đơn.

JMenuItem open = new JMenuItem(“Open”,’O’);

Ở đõy ta đó gọi một constructor với một tham số là nhón của mục chọn, một tham số là ký tự phớm tắt. Sau đú ta add vào JMenu:

file.add(open);

Nếu ta cần biểu diễn cỏc dũng kẻ ngang để phõn tỏch cỏc mục chọn thỡ ta cú thể gọi phương thức addSeparator() của một đối tượng JMenu:

file.addSeparator();

Lớp JPopUpMenu biểu diễn cho thực đơn pop-up. Những thực đơn này cú thể xuất hiện bất cứ vị trớ nào trong cửa sổ hiện tại.

Lớp JCheckBoxMenuItem chứa cỏc mục được chọn để kiểm tra trong cỏc mục thực đơn. Tạo thanh trỡnh đơn: JMenuBar myMenubar = new JMenuBar();

Đặt trạng thỏi cho mỗi mục chọn sử dụng enable() hoặc disable(): Vi dụ: openItem.enable(); //được chọn

openItem.disable(); //mờ mục chọn

FileMenu.addSeparator();

Tạo mục chọn cú chứa menu con khỏc, ta tạo một menu bỡnh thường rồi đưa vào menu đó cú.

Vớ dụ:

//tạo mục chọn cú menu con

JMenu printItem = new JMenu("Print"); //tạo cỏc mục chọn cho menu con printItem.add("Print preview"); printItem.add("to preview");

//đưa mục chọn cú menu con vào menu chớnh FileMenu.add(printItem);

Tạo một mục chọn cú khả năng đỏnh dấu (check Item), một dấu kiểm tra (check mark) sẽ hiện bờn trỏi mục chọn:

Mục đỏnh dấu: CheckboxMenuItem Autosave = new CheckboxMenuItem("Auto save"); FileMenu.add(Autosave);

Xỏc định xem mục chọn Autosave đang ở trạng thỏi nào, ta dựng: Autosave.getState(); Khi sử dụng, để mục chọn tương tỏc và nhận được sự kiện ta cần cài đặt giao diện ActionListener và gắn vào từng mục chọn.

Sau đõy là một vớ dụ xõy dựng một JFrame với thanh menu và cỏc mục chọn trong đú cú cài đặt xử lý cỏc sự kiện.

import javax.swing.*; import java.awt.*; import java.awt.event.*;

class MenuBarSample extends JFrame { //Khai bao mot hop thoai

JOptionPane op = new JOptionPane(); // Khai bao mot thuc don pop-up JPopupMenu jp;

public MenuBarSample() {

// Lay ve doi tuong chua cua Frame hien tai Container pane = this.getContentPane(); // Dat kieu trinh bay

pane.setLayout(new FlowLayout(FlowLayout.LEADING)); // Khai bao mot thanh menu

JMenuBar menuBar= new JMenuBar(); // Khai bao muc File trong thanh menu

JMenu menuFile= new JMenu("File");menuBar.add(menuFile); // Dat ky tu kich hoat tat cung Alt

menuFile.setMnemonic('F');

// Khai bao mot muc chon voi phim tat O

JMenuItem fileOpen = new JMenuItem("Open",'O'); // Them muc chon vao muc File

menuFile.add(fileOpen);

// Them mot muc chon khac voi phim tat N menuFile.add(new JMenuItem("New",'N')); // Them dong ngan cach

menuFile.addSeparator();

// Them mot muc chon co ten Save menuFile.add("Save");

// Xu ly su kien chon muc Open

fileOpen.addActionListener( new ActionListener() {

public void actionPerformed(ActionEvent event) {

// Hien thi thong bao, getContentPane() de lay Container cua Frame op.showMessageDialog(getContentPane(),"Ban vua chon Open"); }

} );

// Xu ly su kien chon New

menuFile.getItem(1).addActionListener(new ActionListener() {

public void actionPerformed(ActionEvent event) {

op.showMessageDialog(getContentPane(),"Ban vua chon New"); }

} );

// Xu ly su kien chon Save

menuFile.getItem(3).addActionListener(new ActionListener() {

public void actionPerformed(ActionEvent event) {

op.showMessageDialog(getContentPane(),"Ban vua chon Save"); }

} );

// Khai bao mot muc chon kieu checkbox

JCheckBoxMenuItem chk = new JCheckBoxMenuItem("is editting"); // Them phan xu ly su kien chon hay khong chon cho no

chk.addActionListener( new ActionListener() {

public void actionPerformed(ActionEvent e) {

// Lay ve doi tuong nguon su kien va ep kieu

JCheckBoxMenuItem ck = (JCheckBoxMenuItem)e.getSource(); if (ck.isSelected())

//Neu duoc chon

op.showMessageDialog(getContentPane(),"Ban vua chon is editting"); else

// Neu khong duoc chon

op.showMessageDialog(getContentPane(),"Ban vua bo chon is editting"); }

} );

// Them muc chon checkbox vao menu File menuFile.add(chk);

// Dat thanh Menu cho Frame la doi tuong menuBar this.setJMenuBar(menuBar);

// Cap phat bo nho cho popup menu jp = new JPopupMenu("Popup"); jp.add("Create");

jp.addSeparator();

jp.add("New Document");

this.addMouseListener( new MouseAdapter() {

public void mouseClicked(MouseEvent e) {

if( (e.getModifiers() & InputEvent.BUTTON3_MASK)== InputEvent.BUTTON3_MASK) jp.show(getContentPane(),e.getX(),e.getY());

} }

); }

public static void main(String[] argvs) {

MenuBarSample m = new MenuBarSample(); m.setSize(300,400);

m.setVisible(true); }

}

Một phần của tài liệu Bài giảng ngôn ngữ lập trình Java doc (Trang 126 - 129)