PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Problem mit Auslesen von Daten aus GUI und verwenden danach in anderen Klassen



MalteRoe
28-05-2006, 15:42
Hallo Leute,
ich bin leider etwas sehr aus der Übung im Programmieren,,, *ahem ja*
ich habe eine Klasse mit der ich meine GUI einen Dialog aufrufe. In diesem Dialog findet eine Auswahl statt, welche durch einen Klick auf OK bestätigt wird. An meine Auswahl aus der Combobox will ich nach dem der Dialog geschlossen ist herankommen. An meine Auswahl komme ich jedoch leider nur im Dialog. Da sie entweder noch nicht da ist oder nach dispose nicht mehr.

Der Code der den Dialog aufrufenden Klasse sieht folgendermassen aus
das ganze ist in einer Methode run()


public class OREWorklet extends BaseOREWorklet {
....
//viel Kommandozeilenkram
...
AuswahlGui a = new AuswahlGui();
a.fuelleCombomitauswahl(response.getVector());

//hier würde ich nun gerne an die aus einer Combobox bspw auslesenen Daten kommen

}


Die GUI - Klasse sieht wie folgt aus..




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(){
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){
System.out.println("tst22");
Combo.addItem(v.firstElement());
}
if ((v.elementAt(i).toString().equals("|")&&i!=(v.size()-1)))
{
System.out.println("hierrrrrr");
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 ){
S_Auswahl = Combo.getSelectedItem().toString();
//setintoController and AWF
System.out.println(S_Auswahl);
//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();
System.out.println("waswarasasa");
}

JButton OK_Button;
JComboBox Combo;
public String S_Auswahl;

}

ich weiss einfach nicht weiter
:(
Über Hilfe wäre ich super dankbar
Gruß
Malte

mwanaheri
28-05-2006, 21:20
Nun, wenn du den Dialog mit dispose() schließt, hast du natürlich keinen Zugriff mehr. Du kannst aber dem Dialog eine Referenz auf die Variable mitgeben, die du im Dialog füllen willst. In die schreibst du dann bei <ok> den Wert. Da die Variable nicht nur im Dialog besteht, bleibt sie auch nach Schließen des Dialoges erhalten.

also in der ersten Klasse z.B.

String selection;
...
AuswahlGui a = new AuswahlGui(selection);


in der zweiten Klasse
String auswahl;
...
public AuswahlGui(String ausw){
this.auswahl = ausw;
this.setLayout(null);
...
}
public void actionPerformed(ActionEvent event) {
...
this.auswahll = combo.getSelectedItem().toString();
...
}

übrigens: Variablennamen sollten immer mit einem Kleinbuchstaben beginnen. "Combo" sollte ein Name einer Klasse sein.

MalteRoe
28-05-2006, 21:53
hmmm irgendwie klappt das nicht kannst du könnt ihr mir n Tipp geben wie ich dann auf die Variable dann in meiner 1. Klasse zugreifen kann?
irgendwie stehe ich da auf m schlauch ich poste nochmal meinen versuch:
Das ist die 1. Klasse:
ausschnitt aus der ersten klasse


public String run(){
String reply;
AuswahlGui a = new AuswahlGui(reply);
a.fuelleCombomitauswahl(response.getVector());
System.out.println("Anwort:" +reply); //hier kommt noch nichts zurück . bzw nur ein Antwort und null ich habe keine Ahnung warum
//den Rückgabewert brauche ich als Rückgabe der Methode run in der ich in der 1. Klasse bin
return reply;



Das ist die 2. Klasse:


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 void 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;

}


es kommt in der ersten Klasse rein garnichts an nicht mal zum "Antwort kommt er bzw er gibt n null aus...
keine Ahnung warum

Danke für die weitere Hilfe
Grüße aus Freiburg
Malte