我正在使用商业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的搜索。 如果有可能,任何人都有任何想法吗?
答案 0 :(得分:0)
当您创建窗口时,有一种Shell样式可以使窗口始终位于顶部:
Shell sShell = new Shell(Display.getCurent(),SWT.ON_TOP);