EclipseRCP开发3-建立自定义菜单

来源:互联网 发布:淘宝网怎么盈利 编辑:程序博客网 时间:2024/06/08 06:02

上篇博客介绍了如何利用Eclipse提供的Action完成菜单开发,这篇介绍一下自定义菜单的功能。

建立工程的步骤就不再赘述了,前面的步骤可以看一下以前的博客。

要想创建自定义菜单的功能,需要做几个操作,包括创建自定义Action,实现Action中的run方法,之后makeActions方法中注册自定义Action,在fillMenuBar方法中添加菜单。

先来建立Action,Action要继承Action,和实现IWorkbenchAction,最主要是实现run方法,run方法的作用是实现菜单的功能。

具体代码为:

import org.eclipse.jface.action.Action;import org.eclipse.ui.IWorkbenchWindow;import org.eclipse.ui.actions.ActionFactory.IWorkbenchAction;public class AboutAction extends Action implements IWorkbenchAction {private IWorkbenchWindow workbenchWindow;public AboutAction(IWorkbenchWindow window){if(window==null){throw new IllegalArgumentException();}this.workbenchWindow=window;}public void run(){if(workbenchWindow !=null){AboutDialog ad=new AboutDialog(workbenchWindow.getShell());ad.open();}}@Overridepublic void dispose() {}}

在上面的run方法中我用到了一个AboutDialog,这个类是一个窗体类,具体实现为:

import org.eclipse.swt.SWT;import org.eclipse.swt.widgets.Dialog;import org.eclipse.swt.widgets.Display;import org.eclipse.swt.widgets.Label;import org.eclipse.swt.widgets.Shell;public class AboutDialog extends Dialog{protected Shell shell;private int result;public AboutDialog(Shell parent) {this(parent,SWT.NONE);}public AboutDialog(Shell parent,int style){super(parent,style);}public int open(){createContents();shell.open();shell.layout();Display display=getParent().getDisplay();while(!shell.isDisposed()){if(!display.readAndDispatch())display.sleep();}return result;}protected void createContents(){shell = new Shell(getParent(), SWT.DIALOG_TRIM | SWT.APPLICATION_MODAL);shell.setSize(400, 150);shell.setText("关于 ");Label label2 =new Label(shell,SWT.NONE);label2.setText("自定义菜单");label2.setBounds(70, 50, 300,20);}}

下面就是和前面博客讲解的那样注册Action和实现FillMenuBar。

public class ApplicationActionBarAdvisor extends ActionBarAdvisor {private IWorkbenchAction aboutAction;public ApplicationActionBarAdvisor(IActionBarConfigurer configurer) {super(configurer);}protected void makeActions(IWorkbenchWindow window) {aboutAction = new AboutAction(window);aboutAction.setId("test.about");aboutAction.setText("关于");register(aboutAction);}protected void fillMenuBar(IMenuManager menuBar) {menuBar.add(createHelpMenu());}private MenuManager createHelpMenu() {MenuManager menu = new MenuManager("About");menu.add(aboutAction);return menu;}}

实现这些代码之后我们就可以运行了。之后就会出现一下的窗体:



这样自定义菜单就完成了。



原创粉丝点击