0

私は商用CAD/CAMシステム(NX、正式にはUnigraphics)を使用しています。これには、(Javaを使用して)開発できるAPIがあります。これにより、JARを作成し、通常のNXUI内から実行できます。次に、SWTを使用して、ユーザーが対話するためのダイアログを作成します。シェルを作成してデフォルトのディスプレイに渡すと、ウィンドウが完全にポップアップします。私がこれまでに持っているコードは次のとおりです。

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ウィンドウのディスプレイ(またはおそらくシェル?)を取得してそれをシェルに渡すことですが、それを行う方法がわからないようです。頭が痛くなるまでグーグルで検索しましたが、すべての「子育て」、「シェルの設定」、「モーダルの作成」検索はすべて、既存の親SWTShell内の子シェルについて話します。これが可能であるならば、誰かが何か考えを持っていますか?

4

1 に答える 1