我正在使用jface / swt处理应用程序,并希望使用org.eclipse.jface.action.Action来实现menuItems,button等。我已经搜索了一些文档的高低教程解释如何使用操作,但一直无法找到任何操作。有人想指点教程,或者自己启发吗?
提前致谢!
注意:这是一个java应用程序,而不是eclipse插件。
答案 0 :(得分:2)
答案 1 :(得分:1)
我也有一些问题,了解JFace中的菜单栏,事件和操作是如何工作的,而且我可以看到的在线帖子很少。我知道如何使用MenuManager。我的问题是,如果操作不同,我是否需要为10个菜单项创建10个不同的类。
您可以学习源代码here。 检查第4章有关Action和IContributionManager的信息。另见第9章。
以下是一个可行的JFace菜单程序示例。
import org.eclipse.jface.action.Action;
import org.eclipse.jface.action.MenuManager;
import org.eclipse.jface.window.ApplicationWindow;
import org.eclipse.swt.widgets.Composite;
import org.eclipse.swt.widgets.Control;
import org.eclipse.swt.widgets.Display;
public class TestApp extends ApplicationWindow {
public TestApp() {
super(null);
addMenuBar();
}
public Control createContents(Composite parent) {
getShell().setText("JFace menu demo");
getShell().setSize(800, 600);
return parent;
}
protected MenuManager createMenuManager() {
MenuManager mainMenu = new MenuManager();
MenuManager fileMenu = new MenuManager("File");
MenuManager helpMenu = new MenuManager("Help");
// File popup menu
fileMenu.add(new OpenFile());
fileMenu.add(new Exit(this));
// Help popup menu
helpMenu.add(new About());
mainMenu.add(fileMenu);
mainMenu.add(helpMenu);
return mainMenu;
}
public static void main(String[] args) {
TestApp win = new TestApp();
win.setBlockOnOpen(true);
win.open();
Display.getCurrent().dispose();
}
class OpenFile extends Action {
public OpenFile() {
super("&Open Filer@Ctrl+O", AS_PUSH_BUTTON);
}
public void run() {
}
}
class Exit extends Action {
ApplicationWindow win;
public Exit(ApplicationWindow aWin) {
super("E&xit@Alt+X", AS_PUSH_BUTTON);
this.win = aWin;
}
public void run() {
this.win.close();
}
}
class About extends Action {
public About() {
super("About", AS_PUSH_BUTTON);
}
public void run() {
}
}
}