2009-05-12 5 views
1

Ich bin neu hier, also vergib mir für jeden Fehler. Ich brauche dringend deine Hilfe. Ich bin neu in der Entwicklung von Eclipse-Plugin und ich habe es geschafft, eine Menge Arbeit zu erledigen. Hier bin ich steckengeblieben. Ich habe eine Aussicht mit einem Knopf. Wenn ein Benutzer auf die Schaltfläche klickt, möchte ich ein neues Fenster öffnen (Das Fenster ist ein Formular mit Textbereichen, Schaltflächen und anderen SWT-Widgets). Ich habe das Fenster fertig erstellt.Eclipse Plugin: Öffnen eines neuen Fensters von der WorkBench

Nachdem ich die Anwendung kompiliert habe, bekomme ich eine neue Instanz der Eclipse-Workbench (wie erwartet), aber wenn ich die Ansicht öffne und auf die Schaltfläche klicke, wird das Fenster nicht angezeigt. Dies ist das Fenster Code-Schnipsel:

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 
} 

Dies ist der Code-Schnipsel ist, die diese Klasse ruft:

... ...

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

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

     } 
    }); 

... ...

Ich verstehe nicht, warum das Fenster nicht angezeigt wird. Kann mir jemand helfen, dieses Problem zu lösen? Ich habe Tage und Nächte damit verbracht es zu reparieren, aber ich habe noch nichts gefunden. Ich habe etwas auf dieser Seite gelesen, aber ich verstehe nicht, was sie bedeuten. Dies ist der Link: How do I get the workbench window to open a modal dialog in an Eclipse based project?

Ich brauche Hilfe bitte.

Antwort

0

Ich glaube nicht, dass Sie eine neue Shell erstellen möchten. Übergeben Sie stattdessen die übergeordnete Shell in Ihrer neuen Klasse. Ich finde es einfacher, eine der Dialog-Klassen (oder Dialog selbst) für neue Fenster zu erweitern. Dann können Sie in Ihrem Konstruktor super (Shell parent) aufrufen, um alle Umgebung/GUI-Sachen für Sie zu initialisieren, und dann können Sie den Dialog-Bereich wie gewünscht gestalten. Um das neue Fenster zu öffnen, machen Sie eine dialog.open().

+0

Ich kann die obige Aussage nicht verstehen. Können Sie es bitte mit einem Code-Snippet ausführen? –

3

Eddy, das ist ziemlich einfach zu lösen. Erstellen Sie kein neues Display. Reuse die ein von der Werkbank:

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 
} 

Alternativ kann damit die Anzeigevariable entlassen und übergeben Sie einfach null an den Shell-Konstruktor.