另一个应用程序中的Java SWT - 如何制作Shell模式

时间:2013-01-30 16:16:49

标签: java swt

我正在使用商业CAD / CAM系统(NX,正式的Unigraphics)。这有一个我可以开发的API(使用Java)。它允许我创建一个JAR并从普通的NX UI中执行它。现在我想使用SWT创建一个供用户与之交互的对话框。 我可以创建一个Shell并将其传递给默认的Display,并且窗口弹出完美。我到目前为止的代码如下:

import org.eclipse.swt.SWT;
import org.eclipse.swt.events.SelectionEvent;
import org.eclipse.swt.events.SelectionListener;
import org.eclipse.swt.layout.RowLayout;
import org.eclipse.swt.widgets.Button;
import org.eclipse.swt.widgets.Display;
import org.eclipse.swt.widgets.Shell;

...
...


Display display = new Display();
Shell shell = new Shell(display);
shell.setLayout(new RowLayout());

final Label label = new Label(shell, SWT.NONE);
label.setText("Hello, World!");

Button button = new Button(shell, SWT.PUSH);
button.setText("Create lines");
button.addSelectionListener(new SelectionListener() {
    @Override
    public void widgetDefaultSelected(SelectionEvent arg0) {
        createLines();
    }

    @Override
    public void widgetSelected(SelectionEvent event) {
        createLines();
    }
});

shell.pack();
label.pack();
button.pack();
shell.open();
while (!shell.isDisposed())
    if (!display.readAndDispatch())
        display.sleep();
display.dispose();
label.dispose();
button.dispose();

出现的SWT窗口似乎不是NX窗口的父级,因此如果用户在NX窗口中单击,则SWT窗口会在其后面消失。

我认为我需要做的是获取NX窗口的Display(或者Shell?)并将其传递给我的Shell,但我似乎无法找到如何去做。 我用谷歌搜索直到我的头痛,但所有“重新育儿”,“设置shell”,“make modal”搜索所有关于现有父SWT Shell中的子shell的搜索。 如果有可能,任何人都有任何想法吗?

1 个答案:

答案 0 :(得分:0)

当您创建窗口时,有一种Shell样式可以使窗口始终位于顶部:

Shell sShell = new Shell(Display.getCurent(),SWT.ON_TOP);