SWT實現右鍵菜單功能

來源:互聯網
上載者:User

右鍵菜單的代碼與其他的menu代碼類似,只是在初始化的時候給出不同的SWT的style。

 

import org.eclipse.swt.SWT;<br />import org.eclipse.swt.events.SelectionEvent;<br />import org.eclipse.swt.events.SelectionListener;<br />import org.eclipse.swt.graphics.Image;<br />import org.eclipse.swt.widgets.Display;<br />import org.eclipse.swt.widgets.Menu;<br />import org.eclipse.swt.widgets.MenuItem;<br />import org.eclipse.swt.widgets.Shell;<br />public class MenuTest {<br />static Display display = new Display();<br />static Shell shell = new Shell(display);<br />/*<br /> * 建立多級菜單, 採用SWT.CASCADE樣式值可以加入子功能表,採用SWT.PUSH樣式值不可以加入子功能表<br /> */<br />public static void createMenu() {<br />shell.setSize(500, 500);<br />shell.setText("menu test window");<br />//shell.setImage(new Image(display, "images/Home.png"));<br />// 通過shell對象和SWT.BAR樣式值來建立一個菜單條<br />Menu menu = new Menu(shell, SWT.BAR);<br />// 在菜單條的基礎之上建立一個File的菜單<br />MenuItem file = new MenuItem(menu, SWT.CASCADE);<br />file.setText("&File");<br />// 先在Shell上建立一個下拉框,然後將下拉框添加到File菜單上<br />Menu filemenu = new Menu(shell, SWT.DROP_DOWN);<br />file.setMenu(filemenu);<br />// 在下拉框上建立功能表項目Open<br />final MenuItem openItem = new MenuItem(filemenu, SWT.CASCADE);<br />openItem.setText("&Open");<br />// 在shell上建立一個下拉框,並把它加到open菜單上<br />Menu childmenu = new Menu(shell, SWT.DROP_DOWN);<br />openItem.setMenu(childmenu);<br />// 在open菜單上建立一個子功能表child<br />final MenuItem childItem = new MenuItem(childmenu, SWT.PUSH);<br />childItem.setText("&Child");<br />// 在open菜單上建立一個子功能表dialog<br />final MenuItem dialogItem = new MenuItem(childmenu, SWT.PUSH);<br />dialogItem.setText("&Dialog");<br />// 在功能表項目之間建立一個分隔字元<br />new MenuItem(filemenu, SWT.SEPARATOR);<br />// 在下拉框上建立功能表項目Exit<br />MenuItem exitItem = new MenuItem(filemenu, SWT.PUSH);<br />exitItem.setText("&Exit");<br />// 設定edit菜單<br />MenuItem edit = new MenuItem(menu, SWT.CASCADE);<br />edit.setText("&Edit");<br />Menu editmenu = new Menu(shell, SWT.DROP_DOWN);<br />edit.setMenu(editmenu);<br />MenuItem cutItem = new MenuItem(editmenu, SWT.PUSH);<br />cutItem.setText("&Cut/tCTRL+X");<br />// 設定快速鍵<br />cutItem.setAccelerator(SWT.CTRL + 'X');<br />// 在功能表項目之間建立一個分隔字元<br />new MenuItem(editmenu, SWT.SEPARATOR);<br />MenuItem copyItem = new MenuItem(editmenu, SWT.PUSH);<br />copyItem.setText("&Copy/tCTRL+C");<br />// 設定快速鍵<br />copyItem.setAccelerator(SWT.CTRL + 'C');<br />// 在功能表項目之間建立一個分隔字元<br />new MenuItem(editmenu, SWT.SEPARATOR);<br />MenuItem pasteItem = new MenuItem(editmenu, SWT.PUSH);<br />pasteItem.setText("&Paste/tCTRL+V");<br />// 設定快速鍵<br />pasteItem.setAccelerator(SWT.CTRL + 'V');<br />// 設定window菜單<br />MenuItem window = new MenuItem(menu, SWT.CASCADE);<br />window.setText("&Window");<br />Menu windowmenu = new Menu(shell, SWT.DROP_DOWN);<br />window.setMenu(windowmenu);<br />final MenuItem maxItem = new MenuItem(windowmenu, SWT.PUSH);<br />maxItem.setText("&Max");<br />// 在功能表項目之間建立一個分隔字元<br />new MenuItem(windowmenu, SWT.SEPARATOR);<br />MenuItem minItem = new MenuItem(windowmenu, SWT.PUSH);<br />minItem.setText("&Min");<br />// 設定help菜單<br />MenuItem help = new MenuItem(menu, SWT.CASCADE);<br />help.setText("&Help");<br />Menu helpmenu = new Menu(shell, SWT.DROP_DOWN);<br />help.setMenu(helpmenu);<br />MenuItem aboutItem = new MenuItem(helpmenu, SWT.PUSH);<br />aboutItem.setText("&About");<br />// 添加一個option菜單,用於添加單選菜單和複選菜單<br />MenuItem option = new MenuItem(menu, SWT.CASCADE);<br />option.setText("&Option");<br />Menu optionmenu = new Menu(shell, SWT.DROP_DOWN);<br />option.setMenu(optionmenu);<br />MenuItem checkItem1 = new MenuItem(optionmenu, SWT.CHECK);<br />checkItem1.setText("Check1");<br />MenuItem checkItem2 = new MenuItem(optionmenu, SWT.CHECK);<br />checkItem2.setText("Check2");<br />// 設定預設為選中<br />checkItem2.setSelection(true);<br />// 設定分隔字元<br />new MenuItem(optionmenu, SWT.SEPARATOR);<br />MenuItem radioItem1 = new MenuItem(optionmenu, SWT.RADIO);<br />radioItem1.setText("Radio1");<br />// 設定預設為選中<br />radioItem1.setSelection(true);<br />MenuItem radioItem2 = new MenuItem(optionmenu, SWT.RADIO);<br />radioItem2.setText("Radio2");<br />// 為菜單添加相應的事件<br />childItem.addSelectionListener(new SelectionListener() {<br />@Override<br />public void widgetSelected(SelectionEvent arg0) {<br />// TODO Auto-generated method stub<br />Shell parent = (Shell) maxItem.getParent().getParent()<br />.getParent();<br />Shell child = new Shell(parent, SWT.RESIZE | SWT.MAX);<br />child.setText("child item has been clicked");<br />child.setImage(new Image(display, "images/Alert.png"));<br />child.setSize(400, 100);<br />child.open();<br />}<br />@Override<br />public void widgetDefaultSelected(SelectionEvent arg0) {<br />// TODO Auto-generated method stub<br />}<br />});<br />// 將菜單條添加到shell上<br />shell.setMenuBar(menu);<br />// 彈出右鍵菜單<br />shell.setMenu(createEditPopup());<br />shell.open();<br />while (!shell.isDisposed()) {<br />if (display.readAndDispatch()) {<br />display.sleep();<br />}<br />}<br />display.dispose();<br />}<br />/*<br /> * 建立一個右鍵菜單 通過樣式值SWT.POP_UP來建立一個右鍵快顯功能表<br /> */<br />public static Menu createEditPopup() {<br />Menu popMenu = new Menu(shell, SWT.POP_UP);<br />MenuItem cutItem = new MenuItem(popMenu, SWT.PUSH);<br />cutItem.setText("&Cut");<br />MenuItem copyItem = new MenuItem(popMenu, SWT.PUSH);<br />copyItem.setText("&Copy");<br />MenuItem pasteItem = new MenuItem(popMenu, SWT.PUSH);<br />pasteItem.setText("&Paste");<br />cutItem.addSelectionListener(new SelectionListener() {<br />@Override<br />public void widgetSelected(SelectionEvent arg0) {<br />// TODO Auto-generated method stub<br />System.out.println("cut");<br />}<br />@Override<br />public void widgetDefaultSelected(SelectionEvent arg0) {<br />// TODO Auto-generated method stub<br />}<br />});<br />pasteItem.addSelectionListener(new SelectionListener() {<br />@Override<br />public void widgetSelected(SelectionEvent arg0) {<br />// TODO Auto-generated method stub<br />System.out.println("paste");<br />}<br />@Override<br />public void widgetDefaultSelected(SelectionEvent arg0) {<br />// TODO Auto-generated method stub<br />}<br />});<br />copyItem.addSelectionListener(new SelectionListener() {<br />@Override<br />public void widgetSelected(SelectionEvent arg0) {<br />// TODO Auto-generated method stub<br />System.out.println("copy");<br />}<br />@Override<br />public void widgetDefaultSelected(SelectionEvent arg0) {<br />// TODO Auto-generated method stub<br />}<br />});<br />return popMenu;<br />}<br />public static void main(String[] args) {<br />MenuTest.createMenu();<br />}<br />}<br />代碼忘了是從誰的blog是弄來的了...

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.