Отображение модального диалога SWT от AWT / Swing - PullRequest
1 голос
/ 20 июля 2011

Используя Albireo, легко увидеть, как показать диалог Swing из SWT:

private AwtEnvironment awtEnv = AwtEnvironment.getInstance(Display.getCurrent);

...
// call from SWT thread
void showSwingMessageDialog(String msg) {
    awtEnv.invokeAndBlockSwt(new Runnable() {
        public void run() {
            Frame parentFrame = awtEnv.createDialogParentFrame();
            JOptionPane.showMessageDialog(parentFrame, msg);
        }
    }
}

Я хочу показать диалог SWT из потока AWT, то есть

// call from AWT thread
void showSWTMessageDialog(String msg) {
    ???
}

1 Ответ

2 голосов
/ 21 июля 2011

Я не уверен, если я хорошо понимаю этот вопрос, но когда вы пишете программу с мостом Albireo / SWT_AWT, вы используете SWT нормально, а когда вам нужно, вы можете использовать Swing для некоторой работы (как this пример на eclipse wiki показывает) .. Так что, если у вас есть родительский элемент (наиболее вероятно, Shell экземпляр) в каком-то глобальном атрибуте, вы можете просто создать диалог SWT, когда и где вам нужно.

EDIT

Для блокировки потока AWT вы можете вызвать invokeAndWait () метод SwingUtilities и внутри экземпляра Runnable показать диалоговое окно SWT ..

...