2009-05-12 19 views
1

私はここにいるので、間違いがないかどうか私を許してください。私は緊急にあなたの助けが必要です。私はEclipseプラグインの開発には新しく、多くの作業を管理しています。これは私が立ち往生したところです。私はボタン付きのビューを持っています。ユーザーがボタンをクリックすると、新しいウィンドウを開くことができます(このウィンドウは、テキストエリア、ボタン、その他のSWTウィジェットを含むフォームです)。 私はウィンドウの作成を終了しました。Eclipseプラグイン:WorkBenchから新しいウィンドウを開く

私はアプリケーションをコンパイルした後、期待通りにEclipse Workbenchの新しいインスタンスを取得しますが、ビューを開いてボタンをクリックするとウィンドウが表示されません。 ...

...

this.btnCreateNewQuery.addSelectionListener(new SelectionListener(){ 
      public void widgetDefaultSelected(SelectionEvent e){ 

      } 
      public void widgetSelected(SelectionEvent e){         NewWindow b = new NewWindow(); 

     } 
    }); 

... ...

public class NewWindow { 
    private Display display; 
    private Shell shell; 

    public NewWindow(){ 

     this.display = new Display(); 
    shell = new Shell(displaySWT.TITLE | SWT.MIN | SWT.CLOSE); 
    shell.setText("fffffffffffff"); 

       // additional code here 
       ... 
       ... 

    shell.open(); 
    this.shellSleep(); // this methode is implemented in my code 
} 

これは、このクラスを呼び出すコードスニペットです:これは、ウィンドウのコードスニペットです

なぜウィンドウが表示されないのかわかりません。誰かが私にこの問題を解決するのを助けることができますか?私はそれを修正しようと昼夜を費やしてきましたが、まだ何も見つかりませんでした。私はこのサイトでsomethigを読んだが、私は彼らが何を意味するのか分からない。これはリンクです: How do I get the workbench window to open a modal dialog in an Eclipse based project?

私は助けてください。

答えて

0

新しいシェルを作成したくないと思っています。代わりに親シェルを新しいクラスに渡します。 Dialogクラス(またはDialog自体)の1つを新しいウィンドウに拡張する方が簡単です。次に、あなたのコンストラクタでスーパー(シェルの親)を呼び出して、あなたのためにすべての環境/ GUIの内容を初期化し、必要な方法でダイアログ領域をレイアウトすることができます。新しいウィンドウを開くには、dialog.open()を実行します。

+0

私は上記のステートメントを理解することはできません。あなたはおそらくコードスニペットでそれを詳しく教えてもらえますか? –

3

Eddy、解決するのはかなり簡単です。新しいディスプレイを作成しないでください。

public NewWindow() { 
     this.display = PlatformUI.getWorkbench().getDisplay(); 
     shell = new Shell(display, SWT.TITLE | SWT.MIN | SWT.CLOSE); 
     shell.setText("fffffffffffff"); 

       // additional code here 
       ... 
       ... 

     shell.open(); 
     this.shellSleep(); // this methode is implemented in my code 
} 

代わりに、表示変数を消して、シェルコンストラクタにnullを渡すだけで済みます。

関連する問題