2012-09-10 5 views
5

: Ich bin auf der Suche nach einer Möglichkeit, Eclipse Window Builder Code-Generator zu konfigurieren, um seine Objektreferenzen in der Klasse Körper statt lokal in der initalize()-Methode zu platzieren .Steuern wo Referenzen auf GUI-Objekte von Eclipse Window Builder

Detaillierte:

Fensterbauer hat in Code-Generator/Codeanalysator einen eingebauten, die GUI-Code aus einer 'grafischen Form Designer' und umgekehrt erzeugen kann. Es ist von großem Nutzen, GUIs schnell zu entwickeln und zu lernen, wie die verschiedenen Frameworks in Java funktionieren (besonders für Java-Anfänger). Allerdings habe ich Probleme, den generierten Code in meinem Design zu verwenden, wenn ich mich zu komplexeren GUI-Setups bewege. Das Problem ist, dass der größte Teil des generierten Codes innerhalb der initialize()-Methode platziert wird, wodurch die Objekte im lokalen Bereich residieren und es schwierig ist, Referenzen von "außerhalb" zu erhalten.

Bisher Ich habe Kopieren/von der initialize() Methode in der Klasse Körper die Typdeklarationen Einfügen manuell als öffentlichen Zugang zu ihnen zu haben, aber das scheint irgendwie der falsche Ansatz. Es funktioniert gut, solange ich die GUI nicht innerhalb des Grafischen Designers reorganisiere. In diesem Fall platziert der Codegenerator seine Typdeklarationen erneut in der Methode initialize().

Automatisch generierte Code sieht wie folgt aus:

// AUTO-GENERATED CODE 
    public class MyGUI { 
     private void initialize() { 
      // gui objects declared AND created in this scope by Window Builder 
      JFrame frame = new JFrame(); 
      JPanel panel_1 = new JPanel(); 
      frame.getContentPane().add(panel_1); 
    } 
    } 

Was ich möchte ist:

public class MyGUI { 
      // accessible from outside 
      public Frame frame = null; 
      public JPanel panel_1 = null; 

     private void initialize() { 
      // gui objects only created in this scope 
      frame = new JFrame(); 
      panel_1 = new JPanel(); 
      frame.getContentPane().add(panel_1); 
    } 
    } 

Ich habe in der Dokumentation zu einer Lösung (knappe Dokumentation über das) suchen, und hat auch die verschiedenen Window Builder Einstellungen studiert, aber bisher kein Glück. Es gibt die "Datenbindung", aber es scheint MVC zu implementieren (binden Sie die GUI-Elemente an ein Modell) und ziemlich viel Overkill.

Gibt es ein Design-Muster, das ich vermisse, oder soll ich die Referenzen aus dem lokalen Bereich von initialize() irgendwie "fischen"?

Antwort

2

Erweitern Sie im Fenster "Einstellungen" WindowBuilder und Swing (oder SWT), und erweitern Sie dann die Codegenerierung. Es gibt Optionen zum lokalen Deklarieren von Variablen, als Felder auf Klassenebene und zum langsamen Initialisieren. Sie können auch Flach- oder Blockanweisungen auswählen. Dort are some examples in the documentation under WindowBuilder Pro User Guide > Preferences > Swing von was zu suchen.

+0

Danke, das ist genau das, was ich gesucht habe. Könnten Sie auf das Thema hinweisen, wo dies dokumentiert ist? Ich habe über das Dokument gesucht, kann es aber nicht finden. – count0

+0

@ count0 WindowBuilder Pro-Benutzerhandbuch> Einstellungen> Swing - Sie können auf der linken Seite der Seite navigieren. Ich werde das auf meine Frage bearbeiten - ich wollte den Link direkt auf diese Seite setzen. –

Verwandte Themen