abrufen von Variablen einer Gui die geschlossen wurde...

Malte Roessner

Grünschnabel
Hallo,
ich habe ein kleines Problem.

ich habe 2 Klassen
die erste Klasse die meine GUI innerhalb einer Methode public String run();
erzeugt und eine zweite Klasse die die GUI darstellt und nach Betätigung des
ok_Buttons wieder vom Bildschirm (möglichst nach Rückgabe des aus einem Feld
ausgelesenen Wertes) verschwinden lässt.
ich möchte auf den ausgelesenen Wert aus meiner ersten Klasse nachdem er mit OK bestätigt ist zugreifen und in der Methode als Rückgabewert "returnen"
2 Fragen dazu

1. muss ich da die Variable global definieren die ich übergebe?
2. wie kann ich meine run methode so lange aufhalten bis der Wert auch da ist bzw wie komme ich an den Wert?

Bin dankbar für jede Hilfe...
Code:
public class Test {


public String run () {
AuswahlGui a = new AuswahlGui(reply);
		a.fuelleCombomitauswahl(response.getVector());
		
		System.out.println("Anwort: " +reply); //hier wird leider nicht gewartet bis der Wert da is bzw wie bekomme ich den Wert in meine Variable ?
		return reply;

}

private String reply;
}
meine 2. Klasse die die GUI darstellt.
Code:
package ch.objeng.appl.eias.awf.worklet.ext.std.ORE;

import javax.swing.JDialog;
import javax.swing.JButton;
import javax.swing.JComboBox;

import java.util.Vector;
import java.awt.event.*;

public class AuswahlGui extends JDialog implements ActionListener{
	public AuswahlGui(String r){
		this.reply=r;
		this.setLayout(null);
		this.setSize(200,120);
		java.awt.Dimension screenSize =                                  java.awt.Toolkit.getDefaultToolkit().getScreenSize();
		setLocation(((screenSize.width/2)-100),((screenSize.height/2))-50);
		ok_Button = new JButton("OK");
		ok_Button.setBounds(30,50,140,20);
		combo = new JComboBox();
		combo.setBounds(30,10,140,20);
		combo = new JComboBox();
		combo.setBounds(30,10,140,20);
		ok_Button.addActionListener(this);	
		this.setDefaultCloseOperation(DO_NOTHING_ON_CLOSE);
		this.setTitle("Vorschläge");
		this.setResizable(false);
	}
	/**
	 * Hier wird die Combobox zur Übergabe an die AWF zurück gefüllt
	 * 
	 * @param v RückgabeVector von OpenRules -- Response weitergereicht
	 */
	public boolean fuelleCombomitauswahl(Vector v){
		System.out.println(v.size());
		for (int i=0; i<v.size();i++){
			if (i==0){
				combo.addItem(v.firstElement());
			}
			if ((v.elementAt(i).toString().equals("|")&&i!=(v.size()-1)))
			{
				combo.addItem(v.elementAt(i+1).toString());
			}
		}
		addComponenten();
		return true;
	}
	
	public void actionPerformed(ActionEvent event) {
		// TODO Auto-generated method stub
		System.out.println("angekommen");
		System.out.println(event.getSource().toString());
		if( event.getSource() == ok_Button  ){
			reply = combo.getSelectedItem().toString();
			//setintoController and AWF
			System.out.println(reply);
		
			//schliessen des Dialogs
			//dispose();
			//System.out.println("test");
			closeDialog();
		}
	}
	
	public void addComponenten(){
		this.add(ok_Button);
		this.add(combo);
		
		//this.add(Table);
		this.setVisible(true);
		this.setEnabled(true);
	}
	
	public void closeDialog(){
		this.setVisible(false);
		this.dispose();
	}
	

	
	

	//Vector tableinhalt;
	//Vector spaltennamen;
	JButton ok_Button;
	JComboBox combo;
	String reply;
	
}
 
Hallo Erdal
so weit so gut
1.Problem gelöst

wie schreibe ich in meiner actionPerformed(ActionEvent event) - Methode in meiner GUI - Klasse auf den String reply in meiner aufrufenden Klasse?

Danke schonmal für deine Mühe

Gruß Malte
 
Hallo Erdal

ich benötige in der Klasse Test.class das Ergebnis meiner GUI in der Variable "String reply".
Damit meine ich das Ergebnis einer Auswahl die z.B. von einer "Combobox" oder ähnlichem herkommen kann .. (actionPerformed in meinem Fall ok_Button als auslösendes Event des auslesens)

Gruß
Malte
 
Mir fallen da jetzt spontan zwei Möglichkeiten ein.

1. Möglichkeit:
Du definierst in deiner GUIKlasse eine weitere Methode getReply() mit der du den Wert holen kannst.

Und dann in der Klasse Test nach
a.fuelleCombomitauswahl()
mit
a.getReply den Wert holen.

2. Möglichkeit:
Den Wert des Strings reply als Rückgabewert von fuelleCombomitauswahl() weitergeben.

String s = a.fuelleCombomitauswahl()


Vg Erdal
 
Hallo Erdal,
Du hast mir perfekt geholfen...
Das mit dem Modal Dialog war der Knackpunkt und ich habe das nun mit einer getReply Methode gelöst
ganz herzlichen Dank
Malte
 
Zurück