Klasse / Object dat ofwel een JTextField of JComboBox kan opslaan

stemmen
42

Ik zou graag mijn eigen Klasse / Object dat ofwel een JTextField of JComboBox kan opslaan onder dezelfde variabele te creëren. Dit is wat ik heb tot nu toe:

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

Ik heb dan een ArrayList dat mijn Parameter objecten opgeslagen. De Naam / Type / Value komt eigenlijk uit een XML-bestand, maar ik heb de code voor een voorbeeld vereenvoudigd:

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

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

Ik voeg dan de componenten op een JPanel .. bv

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

Het werkt allemaal een boete tot dit stadium! Ik krijg ComboBoxes / JTextFields zoals verwacht. Maar wanneer ik probeer om de tekst op te halen / SelectedItem het geeft me de waarde vanaf het moment dat de Parameter object voor het eerst werd geïnitialiseerd bv

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

Het probleem is dat als ik de JComboBox of The JTextField van de interface aan te passen .. het is nog steeds met behulp van de waarde uit toen het werd geïnitialiseerd .. Niet de onlangs gewijzigde waarde. Het even welke Ideeën ??

Bedankt

Tim

De vraag is gesteld op 27/05/2014 om 10:28
user
In andere talen...                            

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