Werteübergabe in Swing Formularen (gui Builder)

Fantasma

Aktives Mitglied
Hallo,
ich bin neu hier im Forum und auch in der Java Programmierung.

Und bei mir brennt es schon heftig, weil ich verzweifelt an einem Übungsproyect arbeite.

Meine Problem ist, dass ich zwei Swing-Forumulare mit dem NetBeans Gui Builder erstellt habe und nun zwischen den beiden Referenzen/Variablen übergeben möchte.

Ein Formular mit Tabelle soll die Werte der selektierten Zeile auf buttondruck an ein neues Formular zur Änderung übergeben.

Wenn ich die Formulare per Hand erstelle ist das kein Thema und ich packe die Daten zur übergabe einfach in den Konstrucktor vom zweiten formular rein (zum Beispiel).

Aber wann und wo kann ich die Werteübergabe in dem GUI Builder Code machen?? Der generiert dermassen viel rein das ich einfach nicht druchblicke.

Ich hoffe ich konnte mehr oder weniger erklären, was ich meine und dass jemand mir Helfen kann.

Beim googeln konnte ich nichts finden.

Danke schon mal 🙂
 
Hallo Fantasma,

herzlich willkommen bei "java-forum.org" 🙂 .

Du könntest zum Beispiel im zweiten Formular "Setter" Methoden rein schreiben, die du dann von Hand aufrufst, nachdem du das Formular erstellt hast.

Gruß,
André
 
Hallo und dange für die Begrüssung 🙂

Das problem ist ich verstehe nicht sehr gut wie die Formulare ueber den gui builder aufgebaut werden.

Und auch ncith wirklich den Aufruf mit Main() und .run(). Weist du wo ich da was nachlesen kann? Früher oder später werde ich
es ja doch wissen müssen.

Deine Idee mit dem Setter hab ich schon versucht. Oder besser umgekehrt ich hab in das erste Formular einen Getter eingebaut. Die sache ist nur, sowie ich das erste Formular nicht mit "new" initialisiert habe sondern mit "formular.main()" kann ihc die Klasse auch nciht über den namen aufrufen und musste die Variable, die ich übergeben will und den getter als statisch deklarieren. Jetzt funktioniert es, aber hältst du die Lösung auch für gut und elegant?

Vielen dank für deine Unterstützung und sorry für das späte feedback.

Kannst Du mir vielleicht noch ein paar schlagworte zu dem Problem mit dem Umgang mit GUI-Builder Formularen geben? Damit ich mich etwas einlesen kann?

Fantasma

Edit: Jetzt stehe ich zum Beispiel vor dem Problem:

Ich öffne das zweite Fenster aus dem ersten Fenster heraus.
Während dessen soll das erste Fenster nicht focusable sein. (bis hier ok)
Wenn ich das zweite Fenster aber schliesse mit this.dispose() (hab ich hier im forum gefunden, danke!)

Wie kann ich dann anschliessen aus dem zweiten Fenster heraus das erste wieder focusable machen?

Es läuft sich aufs selbe raus ich verstehe den umgang mit den GUI Builder Fenstern nicht, kontrollfluss, werteuebergabe etc...

Wenn mir da jemand was zum nachlesen nennen kann wäre echt super 🙂

danke schon mal
 
Hallo,

ich weis nicht ob Du Dich da wirklich reinlesen willst. Es ist alles sehr chaotisch programmiert und ein Teil wird Dir wahrscheinlich auch spanisch vorkommen ;-).

Ich habs mal angehängt, aber wie gesagt ich bin nicht sauer wenn Du keine lust hast es dir anzuschaun.
Und wie gesagt ich glaube mir fehlt da ein grunsätzliches verständniss,, so dass ein paar links mit knapper info zum einlesen wahrscheinlich schon wunder bewirken koennte.

Eine Möglichkeit die mir noch eingefallen ist, wäre in der main() funktion ein paar statische variablen für die Zustände der fenster zu deklarieren. Wäre das eine Idee? Ich bin nicht so der fan von globalen statischen variablen... aber was meinst du?

Ok vielen Dank
 

Anhänge

Warum machst du deinen Code nicht zunächst mal kompilierbar? Netbeans zeigt in 7 Klassen noch Fehler an, die erst behoben werden müssen. Ich hätte damit zwar kein Problem, aber es handelt sich aber z.B. um auskommentierten Code, der dann aber noch in einer anderen Klasse benutzt wird...
So ist doch keine Analyse deines angesprochenen Problems möglich.
 
Versuch mal dies:

VistaClientes:
Java:
    private void buttonModificarEmpleadoActionPerformed(java.awt.event.ActionEvent evt) {                                                        
        try{ 
            DTCliente tmpDTCliente = listaClientes[tablaClientes.getSelectedRow()];
            this.errorSeleccion.setVisible(false);
            AgregarModificarEmpleado agregarModificarEmpleado = new AgregarModificarEmpleado();
            agregarModificarEmpleado.setNombre(tmpDTCliente.nombre);
            agregarModificarEmpleado.setVisible(true);
        } catch(ArrayIndexOutOfBoundsException e){
            this.errorSeleccion.setVisible(true);
        }
    }
AgregarModificarEmpleado:
Java:
    public void setNombre(String nombre) {
        nombreEmpleado.setText(nombre);
    }

Gruß,
André
 
Hallo,

Danke für Eure Antworten.

Andre: Danke für den Vorschlag. Ich denke so in etwa werde ich das machen für die Weitergabe von dem DTEmpleado. Ich hatte bisher die neuen Formulare über .main() gestartet und nicht mit new eine Instanz erzeugt das hat es für mich etwas kompliziert gemacht.
Gedanke: Wenn ich sämtliche Formulare auch im Main über new instanziere, dann kann ich auch das Editable von jedem Formular über jedes andere Formular steuern. Gehen sollte es, aber glaubst du auch dass es eine gute idee ist oder geht das noch besser?

L-Ectron:
Konntest du das programm bei dir ncith ausführen? ich frage nur, weil bei mir läuft es, aber es sollte eigentlich auch auf dem Rechner von meinem Prof laufen. (da würd er sich freuen glaub ich ;-) )
Es ist mir schon klar, dass ich noch an einigen Stellen aufräumen muss, und an anderen Stellen Funktionen wieder einkommentieren/implementieren muss. Wie gesagt es ist ein chaos code und ich wollte ihn dir nicht antun. Ich glaube die Lösung von Andre bringt mich schon ein ganzes stükc weiter.
 
Wenn ich sämtliche Formulare auch im Main über new instanziere, dann kann ich auch das Editable von jedem Formular über jedes andere Formular steuern. Gehen sollte es, aber glaubst du auch dass es eine gute Idee ist oder geht das noch besser?

Wann du welche Objekte erzeugst, das ist von der Funktion her wohl ziemlich egal, solange du Zugriff auf die benötigten Objekte hast. Ich denke, du musst schon selbst entscheiden, was für den Aufbau deiner Anwendung am besten passt.

Gruß,
André
 

Zurück
Oben