Как использовать действия Jface / SWT? - PullRequest
1 голос
/ 16 марта 2012

Я работаю над приложением, использующим jface / swt, и хотел бы использовать org.eclipse.jface.action.Action для реализации menuItems, кнопок и т. Д. Я искал высоко и низко некоторую документацию или руководство, объясняющее, какиспользовать действия, но не смогли их найти.Кто-то хочет указать мне на учебники, или сами просветите меня?

Заранее спасибо!

Примечание. Это Java-приложение, а не плагин Eclipse.

Ответы [ 2 ]

2 голосов
/ 16 марта 2012

Использование IContributionManager.

1 голос
/ 12 октября 2014

У меня также есть некоторые проблемы с пониманием того, как работают строка меню, события и действия в JFace, и в Интернете очень мало полезных сообщений, из того, что я вижу.Я вроде знаю, как использовать MenuManager.У меня вопрос, нужно ли мне создавать 10 разных классов для 10 пунктов меню, если действия разные.

Вы можете изучить исходный код здесь .Проверьте главу 4 о действии и 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() {

        }
    }
}
...