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