Klasse / Objekt som kan lagre enten en JTextField eller JComboBox

stemmer
42

Jeg ønsker å lage min egen klasse / objekt som kan lagre enten en JTextField eller JComboBox under samme variabel. Dette er hva jeg har så langt:

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

Jeg Da har en Arraylist som lagrer mine Parameter objekter. Navn / Type / Verdi faktisk kommer fra en XML-fil, men jeg har forenklet koden for et eksempel:

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

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

Jeg deretter legge til komponenter til et JPanel .. f.eks

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

Det hele fungerer fint opp til dette stadiet! Jeg får comboboxes / JTextFields som forventet. Men når jeg prøver å hente tekst / SelectedItem det gir meg verdien fra da Parameter objektet ble først initialisert f.eks

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();
  }
}

Problemet er at hvis jeg endrer JComboBox eller den JTextField fra grensesnittet .. det er fortsatt bruker verdien fra da det ble initialisert .. Ikke den nylig endret verdi. Noen ideer??

Takk

Tim

Publisert på 27/05/2014 klokken 09:28
bruker
På andre språk...                            

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