: 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"?
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
@ 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. –