Java 如何使用jface/swt操作?

Java 如何使用jface/swt操作?,java,swt,action,jface,Java,Swt,Action,Jface,我正在使用jface/swt开发一个应用程序,并希望使用org.eclipse.jface.action.action来实现菜单项、按钮等。我已经到处搜索一些说明如何使用操作的文档或教程,但一直找不到。有人愿意给我指点教程,或者自己给我启发吗 提前谢谢 注意:这是一个java应用程序,不是eclipse插件。使用。使用。我在理解JFace中的菜单栏、事件和操作是如何工作的方面也遇到了一些问题,从我看到的内容来看,网上几乎没有有用的帖子。我知道如何使用动物园。我的问题是,如果操作不同,是否需要为1

我正在使用jface/swt开发一个应用程序,并希望使用org.eclipse.jface.action.action来实现菜单项、按钮等。我已经到处搜索一些说明如何使用操作的文档或教程,但一直找不到。有人愿意给我指点教程,或者自己给我启发吗

提前谢谢


注意:这是一个java应用程序,不是eclipse插件。

使用。

使用。

我在理解JFace中的菜单栏、事件和操作是如何工作的方面也遇到了一些问题,从我看到的内容来看,网上几乎没有有用的帖子。我知道如何使用动物园。我的问题是,如果操作不同,是否需要为10个菜单项创建10个不同的类

你可以学习源代码。 查看第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() {

        }
    }
}

我在理解JFace中的菜单栏、事件和操作是如何工作的方面也遇到了一些问题,从我所看到的来看,网上几乎没有有用的帖子。我知道如何使用动物园。我的问题是,如果操作不同,是否需要为10个菜单项创建10个不同的类

你可以学习源代码。 查看第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() {

        }
    }
}