0

プラットフォームの設定を拡張するEclipseプラグイン内のボタンをクリックすると、DateTimeシェルを開こうとしています。

これはボタンSelectionAdapterのコードです

    @Override
    public void widgetSelected(SelectionEvent e) {
           super.widgetSelected(e);
          Display display = Display.getCurrent();
          Shell ns = new Shell(display);
          ns.setLayout (new RowLayout ());
          final DateTime calendar = new DateTime (ns, SWT.CALENDAR);
          ns.pack();
          ns.open();
          ns.forceActive();
          ns.setEnabled(true);
          while (!ns.isDisposed()) {
              if (!display.readAndDispatch())
                display.sleep();
           }
    }

次の画像でわかるように、シェルが描かれていますが、有効になっていないようです。実際、日付を選択したり、日付を閉じたりサイズを変更したりすることはできません。ご覧のとおり、3つのボタン(赤、黄、緑)は灰色で表示されます。私は何が間違っているのですか?

ここに画像の説明を入力してください

アップデート

私はこのようなシェルを取得しようとしました:

  Display display = new Display();
  IWorkbench workbench    = PlatformUI.getWorkbench();
  IWorkbenchWindow window = workbench.getActiveWorkbenchWindow();
  Shell shell             = window.getShell();

しかし今私はこれを手に入れますここに画像の説明を入力してください

これは実際には私の意図からかなりかけ離れています。私の目的は、DateTimeウィジェットで新しいウィンドウを表示することです

アップデート

私はGilbertのアドバイスに従い、独自のJFaceDialogを定義しました。Lars Vogelがhttp://www.vogella.com/articles/EclipseDialogs/article.htmlで説明しているように、TitleAreaDialogの拡張として作成しました。今は動作しますが、まだ改善が必要なことがあります。

ここに画像の説明を入力してください

タイトルの大きなヘッダーを非表示にし、ヘルプボタンを非表示/削除したいと思います。それを行う方法はありますか?間違ったクラスを拡張していますか?

4

1 に答える 1

2

Eclipseプラグインを作成していると言っているので、次のことを試してShellを入手してください。

IWorkbench workbench    = PlatformUI.getWorkbench();
IWorkbenchWindow window = workbench.getActiveWorkbenchWindow();
Shell shell             = window.getShell();

Eclipseの外部でSWTアプリケーションを構築しているのでない限り、独自のシェルを作成することはお勧めできません。

Eclipseの外部でSWTアプリケーションを構築している場合を除いて、独自のディスプレイを作成することはお勧めできません。

あなたが探しているのは、カレンダーのダイアログだと思います。独自のダイアログを作成するには、EclipseDialogクラスを拡張する必要があります。

于 2013-01-18T20:22:28.660 に答える