Как запустить какую-то задачу после того, как окно приложения создано и видно? - PullRequest
0 голосов
/ 27 марта 2012

У меня есть приложение SWT.Мне нужно запустить какое-то задание (с индикатором выполнения) после запуска приложения и отображения его окна.Как / Где это сделать?

import org.eclipse.jface.action.MenuManager;
import org.eclipse.jface.action.StatusLineManager;
import org.eclipse.jface.action.ToolBarManager;
import org.eclipse.jface.window.ApplicationWindow;
import org.eclipse.swt.SWT;
import org.eclipse.swt.graphics.Point;
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 TestApp extends ApplicationWindow {

    /**
     * Create the application window.
     */
    public TestApp() {
        super(null);
        createActions();
        addToolBar(SWT.FLAT | SWT.WRAP);
        addMenuBar();
        addStatusLine();
    }

    /**
     * Create contents of the application window.
     * @param parent
     */
    @Override
    protected Control createContents(Composite parent) {
        Composite container = new Composite(parent, SWT.NONE);

        return container;
    }

    /**
     * Create the actions.
     */
    private void createActions() {
        // Create the actions
    }

    /**
     * Create the menu manager.
     * @return the menu manager
     */
    @Override
    protected MenuManager createMenuManager() {
        MenuManager menuManager = new MenuManager("menu");
        return menuManager;
    }

    /**
     * Create the toolbar manager.
     * @return the toolbar manager
     */
    @Override
    protected ToolBarManager createToolBarManager(int style) {
        ToolBarManager toolBarManager = new ToolBarManager(style);
        return toolBarManager;
    }

    /**
     * Create the status line manager.
     * @return the status line manager
     */
    @Override
    protected StatusLineManager createStatusLineManager() {
        StatusLineManager statusLineManager = new StatusLineManager();
        return statusLineManager;
    }

    /**
     * Launch the application.
     * @param args
     */
    public static void main(String args[]) {
        try {
            TestApp window = new TestApp();
            window.setBlockOnOpen(true);
            window.open();
            Display.getCurrent().dispose();
        } catch (Exception e) {
            e.printStackTrace();
        }
    }

    /**
     * Configure the shell.
     * @param newShell
     */
    @Override
    protected void configureShell(Shell newShell) {
        super.configureShell(newShell);
        newShell.setText("New Application");
    }

    /**
     * Return the initial size of the window.
     */
    @Override
    protected Point getInitialSize() {
        return new Point(450, 300);
    }

}

Ответы [ 2 ]

1 голос
/ 27 марта 2012

Вы можете использовать слушателя рисования.

@Override
protected Control createContents(Composite parent) {
    Composite container = new Composite(parent, SWT.NONE);

    container.addPaintListener(new PaintListener() {

        @Override
        public void paintControl(PaintEvent e) {
            System.out.println("I'm ready to go...");

        }
    });
    return container;
}
0 голосов
/ 27 марта 2012

Спасибо Тому за идею регистрации слушателя.Я нашел то, что работает для меня - ShellListener.Пример ниже.

/**
 * Create contents of the application window.
 * @param parent
 */
@Override
protected Control createContents(Composite parent) {
    Composite container = new Composite(parent, SWT.NONE);

    // build gui...

    getShell().addShellListener(new ShellAdapter() {
        @Override
        public void shellActivated(ShellEvent shellevent) {
            // some task...
        }
    });     

    return container;
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...