Check Menu Item là mỗi menu item là 1 checkbox. Dưới đây là source code hướng dẫn tạo 1 check menu item.
CheckMenuItemEx.java
package vncoding; import org.eclipse.swt.SWT; import org.eclipse.swt.events.SelectionAdapter; import org.eclipse.swt.events.SelectionEvent; import org.eclipse.swt.layout.FormAttachment; import org.eclipse.swt.layout.FormData; import org.eclipse.swt.layout.FormLayout; import org.eclipse.swt.widgets.Display; import org.eclipse.swt.widgets.Event; import org.eclipse.swt.widgets.Label; import org.eclipse.swt.widgets.Listener; import org.eclipse.swt.widgets.Menu; import org.eclipse.swt.widgets.MenuItem; import org.eclipse.swt.widgets.Shell; public class CheckMenuItemEx { private Shell shell; private Label status; private MenuItem statItem; public CheckMenuItemEx(Display display) { initUI(display); } public void initUI(Display display) { shell = new Shell(display, SWT.SHELL_TRIM | SWT.CENTER); Menu menuBar = new Menu(shell, SWT.BAR); shell.setMenuBar(menuBar); MenuItem cascadeFileMenu = new MenuItem(menuBar, SWT.CASCADE); cascadeFileMenu.setText("&File"); Menu fileMenu = new Menu(shell, SWT.DROP_DOWN); cascadeFileMenu.setMenu(fileMenu); MenuItem exitItem = new MenuItem(fileMenu, SWT.PUSH); exitItem.setText("&Exit"); MenuItem cascadeViewMenu = new MenuItem(menuBar, SWT.CASCADE); cascadeViewMenu.setText("&View"); Menu viewMenu = new Menu(shell, SWT.DROP_DOWN); cascadeViewMenu.setMenu(viewMenu); statItem = new MenuItem(viewMenu, SWT.CHECK); statItem.setSelection(true); statItem.setText("&View Statusbar"); statItem.addListener(SWT.Selection, new MyStatusListener()); exitItem.addSelectionListener(new MySelectionAdapter()); status = new Label(shell, SWT.BORDER); status.setText("Ready"); FormLayout layout = new FormLayout(); shell.setLayout(layout); FormData labelData = new FormData(); labelData.left = new FormAttachment(0); labelData.right = new FormAttachment(100); labelData.bottom = new FormAttachment(100); status.setLayoutData(labelData); shell.setText("Check menu item"); shell.setSize(300, 250); shell.open(); while (!shell.isDisposed()) { if (!display.readAndDispatch()) { display.sleep(); } } } private class MyStatusListener implements Listener { @Override public void handleEvent(Event event) { if (statItem.getSelection()) { status.setVisible(true); } else { status.setVisible(false); } } } private class MySelectionAdapter extends SelectionAdapter { @Override public void widgetSelected(SelectionEvent e) { shell.getDisplay().dispose(); System.exit(0); } } @SuppressWarnings("unused") public static void main(String[] args) { Display display = new Display(); CheckMenuItemEx ex = new CheckMenuItemEx(display); display.dispose(); } }
Giải thích:
Ví dụ minh họa check menu item. Checkbox được active, trạng thái “Ready” được shown trên status bar, nếu không được active, trạng thái “Ready” ẩn trên status bar.
statItem = new MenuItem(viewMenu, SWT.CHECK);
Tạo check menu item với hằng số SWT.CHECK
statItem.setSelection(true);
Checkbox item được khởi tạo là trạng thái check ban đầu.
statItem.setText("&View Statusbar");
Đặt tên cho check menu item.
statItem.addListener(SWT.Selection, new MyStatusListener());
Lắng nghe sự kiện click check menu item “View Statusbar”. Hàm MyStatusListener() được gọi.
if (statItem.getSelection()) { status.setVisible(true); } else { status.setVisible(false); }
Hàm getSelection() trả về true nếu check menu item được check.
Hàm setVisible(true) hiển thị “Ready” ở cuối cửa sổ.
Kết quả:
Leave a Reply
You must be logged in to post a comment.