简单写了一个如何添加菜单栏的ApplicationWindow。
网上这方面的信息很少。
悲剧
import org.eclipse.jface.action.MenuManager;
import org.eclipse.jface.action.ToolBarManager;
import org.eclipse.jface.window.ApplicationWindow;
import org.eclipse.swt.SWT;
import org.eclipse.swt.widgets.Button;
import org.eclipse.swt.widgets.Composite;
import org.eclipse.swt.widgets.Control;
import org.eclipse.swt.widgets.Display;
import org.eclipse.swt.widgets.Shell;
public class HelloJFace extends ApplicationWindow {
private Composite parent;
public HelloJFace() {
super(null);
addMenuBar();
}
/* (非 Javadoc)
* @see org.eclipse.jface.window.Window#createContents(org.eclipse.swt.widgets.Composite)
* 该方法负责创建窗口中的控件
*/
protected Control createContents(Composite parent) {
this.parent=parent;
//getShell()方法为父类中的方法,返回窗口的Shell对象
//设置窗口显示的标题
getShell().setText("JFace");
//创建建一个按钮
Button button = new Button(parent, SWT.CENTER);
button.setText("JFace Hello!");
//调整窗口布局
parent.pack();
return parent;
}
@Override
protected MenuManager createMenuManager() {
MenuManager menuManager = new MenuManager("menu");
menuManager.add(new HelloAction1());
menuManager.add(new HelloAction2());
return menuManager;
}
@Override
protected ToolBarManager createToolBarManager(int style) {
// TODO Auto-generated method stub
return super.createToolBarManager(style);
}
@Override
protected void createStatusLine(Shell shell) {
// TODO Auto-generated method stub
super.createStatusLine(shell);
}
public static void main(String[] args) {
//创建窗口对象
HelloJFace helloJFace = new HelloJFace();
//设置窗口处于打开状态
helloJFace.setBlockOnOpen( true );
//打开窗口
helloJFace.open();
//释放Dipsplay对象
Display.getCurrent().dispose();
}
}
HelloAction1 和 HelloAction2 都来自jFace 的action 就可以了。