Auf Ereignisse anderer Klasse reagieren!

Status
Nicht offen für weitere Antworten.

Stegi

Mitglied
Hi,

ich weis nicht ob der Titel so passend gewählt ist, aber ich wusste nicht wie ich es am besten kurz und knapp beschreibe! 😀

Ich bin gerade dabei eine Anwendung zu schreiben um Kassenbücher zu führen. Natürlich mit MySQL Datenbank.
Über die Menüleiste des Hauptfensters (JFrame) kann ich den Menüeintrag "öffnen" Wählen.
Danach öffnet sich ein kleines Fenster (JFrame) mit einer Tabelle in der die ganzen vorhandenen Kassenbücher gelistet sind.

Wenn ich dann eine Zeile auswähle und den Button zum öffnen betätige soll der Index der Zeile zurück gegeben werden.


also noch mal.

aus der Klasse "MainWindow" rufe ich nach dem der Menüpuntk "öffnen" gewählt wurde , eine neue Instanz der Klasse "jFrame_open" auf.
Code:
jFrame_open open_cashbox = new jFrame_open();
open_cashbox.setVisible(true);

In dem Moment, wird das ganze JFrame initialisiert und alle Objekte dargestellt. Wenn dann das Ereignis des Button, durch klick, ausgelöst wird, soll der Index der markierten Zeile an der Punkt der Klasse "MainWindow" zurückgegeben werden.

Wie kann ich das realisieren?
Ich habe folgendes versucht:

Code:
jFrame_open open_cashbox = new jFrame_open();
open_cashbox.setVisible(true);

open_cashbox.getSelectRow();

Da das Programm aber nicht wartet bis endlich mal ein Ereignis über den Button ausgelöst wird, läuft es die zeilen aus der Klasse "MainWindow" weiter ab. Somit liefert open_cashbox.getSelectRow(); nur den zuvor als default gesetzten Wert zurück!

Ist nicht ganz leicht den Sachverhalt zu beschreiben, aber ich hoffe ihr habt trotzdem mein Problem verstanden und könnt mir helfen.

Danke im Vorraus!!
 
nutze einen modalen Dialog

z.b.
Code:
public class ADialog extends JDialog implements ActionListener {
         private String s;
	public ADialog(JFrame mainwindow) 
		 super( mainwindow, true );
		//....
	}

	public static String getSelectedObject(JFrame mainwindow) {
		ADialog ad = new ADialog(mainwindow);
                  return s;
	}

Durch den aufruf von getSelectedObject wird ein modaler Dialog erstellt, der erstmal den rest des programmes stoppt. Nun kannst du z.b. die variable s füllen lassen oder was auch immer. Wenn der Dialog geschlossen wird liefert die methode dann die Variable s zurück
 
Die einfachste Lösung: verwende statt des JFrames lieber einen JDialog, und zwar einen modalen JDialog. Dieser blockiert so lange die Klasse, die ihn aufgerufen hat, bis der Dialog wieder geschlossen wird (also genau das, was Du beschrieben hast).

Ändere zuerst Deine Oberklasse:
Code:
public class jFrame_open extends JDialog
Ich gehe davon aus, dass Deine Quelltextausschnitte aus einem anderen JFrame stammen. Ergänze beim Konstruktoraufruf von jFrame_open ein this:
Code:
jFrame_open open_cashbox = new jFrame_open(this);
Im Konstruktor ergänzt Du dann einen Aufruf des Superkonstruktors:
Code:
public jFrame_open( JFrame f )
{
    super(f,"Titel des JDialogs...",true);
    ...
}
Das true besagt, dass der JDialog modal sein soll, d.h. sobald der JDialog nun angezeigt wird, wird Dein aufrufender JFrame so lange gesperrt, bis open_cashbox wieder geschlossen wird. Weitere Infos findest Du in der Java-API zur Klasse JDialog. Hoffe, das hilft!

kaie
 
Status
Nicht offen für weitere Antworten.

Neue Themen


Zurück
Oben