warten bis fenster geschlossen

Liqidale

Grünschnabel
hiho,

erstmal der relevante code meines kleinen programm:

Code:
          ...
          public void actionPerformed(ActionEvent e) {
		Object source = e.getSource();

		if (source == hinzu) {
			
			new Edit(200, 100, "aendern").aendern(1, Bilanz);
			
			
			if (Bilanz.GetIst() > Bilanz.GetSoll()) {
				soll.setText(new Integer(Bilanz.GetIst()).toString());
			} else {
				soll.setText(new Integer(Bilanz.GetSoll()).toString());
			}
			ist.setText(new Integer(Bilanz.GetIst()).toString());
			dif.setText(new Integer(Bilanz.GetSoll() - Bilanz.GetIst())
					.toString());
		}
...

und die 2. klasse:

Code:
mport java.awt.*;
import java.awt.event.*;

import javax.swing.*;

public class Edit extends JFrame implements ActionListener {
	static final long serialVersionUID = 1L;

	JButton ok, cancel;
	JTextField td;
	JFrame win;
	String sd = "";

	Werte nc;

	int Was;
	boolean sdate;

	public Edit(int x, int y, String t) {
		setTitle(t);
		setDefaultCloseOperation(JFrame.DO_NOTHING_ON_CLOSE);
		setSize(x, y);
		Dimension d = Toolkit.getDefaultToolkit().getScreenSize();
		setLocation((d.width - getSize().width) / 2,
				(d.height - getSize().height) / 2);
	}

	public void aendern(int was, Werte wert) {
		Was = was;
		nc = wert;
		
		win = new Edit(200, 100, "ändern");
		win.setLayout(new BorderLayout());
		win.setFont(new Font("Roman", 1, 12));
		win.setBackground(Color.lightGray);
		JPanel p = new JPanel();
		JPanel q = new JPanel();

		p.setLayout(new FlowLayout(FlowLayout.CENTER));
		win.add("North", p);
		td = new JTextField("", 6);
		td.addActionListener(this);
		p.add(td);

		q.setLayout(new FlowLayout(FlowLayout.LEFT));
		win.add("South", q);
		ok = new JButton("OK");
		ok.addActionListener(this);
		q.add(ok);
		cancel = new JButton("ABBRUCH");
		cancel.addActionListener(this);
		q.add(cancel);

		win.setVisible(true);
		
	}

	public void actionPerformed(ActionEvent e) {

		Object source = e.getSource();

		if (source == td) {
			sd = td.getText();
			nc.SetIst(nc.GetIst() + Was * Integer.valueOf(sd).intValue());
			System.out.println(nc.GetIst());
			if (nc.GetIst() > nc.GetSoll()) {
				nc.SetSoll(nc.GetIst());
			}
			win.setVisible(false);
			win.dispose();
			

		}

		if (source == ok) {
			sd = td.getText();
			if (!sd.equals("")) {
				nc.SetIst(nc.GetIst() + Was * Integer.valueOf(sd).intValue());
				System.out.println(nc.GetIst());
				sdate = false;
				if (nc.GetIst() > nc.GetSoll()) {
					nc.SetSoll(nc.GetIst());
				}
				win.setVisible(false);
				win.dispose();
			} else {
				JOptionPane.showMessageDialog(null,
						"Bitte einen Wert eingeben oder ABBRUCH drücken.",
						"IstSoll", JOptionPane.ERROR_MESSAGE);
			}
		}
		if (source == cancel) {
			win.setVisible(false);
			win.dispose();
		}
	}
}



so, nun zum problem:

ich möchte die klasse warten lassen, bis die durch
Code:
new Edit(200, 100, "aendern").aendern(1, Bilanz);
aufgerufene Klasse/Methode beendet ist.

beide klassen erzeugen ein fenster. alles was nach dem aufruf der 2. klasse folgt soll bewirken, dass das erste fenster aktualisiert wird.
beide fenster werden mittels awt und swing realisiert.

wie lasse ich die erste klasse warten bis das 2. fenser geschlossen wird?


EDIT: 2. klasse hinzugefügt; sonstige verbesserungsvorschläge willkommen
 
Zuletzt bearbeitet:
Du wirst leider nicht drumrum kommen, dass ich ein wenig Kritik an deinem Code übe ;) :

1.) Variablennamen schreibt man klein (zumindest am Anfang)
2.) Methodennamen schreibt man klein (zumiindest am Anfang)
3.) AWT und Swing sollte nicht gemischt werden (es sei denn, man weiß, was man tut)
4.) Ne Mischung aus Deutsch und Englisch im Quellcode schaut sch... aus

Um dein Problem zu lösen, würde ich dir raten, dass du deine "Edit"-Klasse in die Tonne trittst und dafür ein JOptionPane verwendest. Wenn dus unbedingt selbst machen willst => JDialog + Owner setzen + Modal.
 
Zurück