Klasse / Objekt, das entweder ein JTextField oder JComboBox speichern

stimmen
42

Ich möchte meine eigene Klasse / Objekt erstellen, die entweder eine JTextField oder JComboBox unter derselben Variablen speichern kann. Das ist, was ich habe, so weit:

import javax.swing.JComboBox;
import javax.swing.JComponent;
import javax.swing.JTextField;

public class Parameter {

String name;
String type;
String value;
JComponent comp;

Parameter(String inName, String inType, String inValue) {

    this.name = inName.trim();
    this.type = inType.trim();
    this.value = inValue.trim();

    // Set Component Type
    if (type.equalsIgnoreCase(bool)) {
        String[] tfArray = { Yes, No };
        comp = new JComboBox(tfArray);
        comp.setFocusable(false);
        ((JComboBox)comp).setSelectedItem(value.trim());

    } else {
        comp = new JTextField(value);
    }

}// End Parameter Constructor

public String getName() {
    return name;
}

public String getType() {
    return type;
}

public String getValue() {
    return value;
}

public JComponent getComp() {
    return comp;
}

}// End Parameter Class

Ich habe dann eine Arraylist, die meine Parameter Objekte speichert. Der Name / Typ / Wert kommt eigentlich aus einer XML-Datei, aber ich habe den Code für ein Beispiel vereinfacht:

static ArrayList<Parameter> parameterArray = new ArrayList<Parameter>();

for(int i = 0; i < 10; i++){
parameterArray.add(new Parameter(parameterName,parameterType,value));
}

Ich füge dann die Komponenten zu einem JPanel .. zB

for(int i = 0; i < 10 ; i++){
panel.add(parameterArray.get(i).getComp());
}

Es Alle Arbeiten dieser Phase fein aufgestiegen! Ich erhalte Comboboxen / JTextFields wie erwartet. Jedoch wenn ich versuche, den Text zum Abrufen / SelectedItem es gibt mir den Wert aus, wenn das Parameter-Objekt wurde zunächst initialisiert zB

for(int i = 0; i < 10; i++){
  if(parameterArray.get(i).getType.equalsIgnoreCase(bool){
    value = ((JComboBox)parameterArray.get(i).getComp()).getSelectedItem().toString();
  }else{
    value = ((JTextField)parameterArray.get(i).getComp()).getText();
  }
}

Das Problem ist, dass wenn ich die JComboBox oder die JTextField von der Schnittstelle ändern .. es ist immer noch den Wert verwenden, wenn es wurde initialisiert .. Nicht der neu geänderten Wert. Irgendwelche Ideen??

Vielen Dank

Tim

Veröffentlicht am 27/05/2014 um 10:28
vom benutzer
In anderen Sprachen...                            

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more