可以存储JTextField或JComboBox的类/对象

时间:2014-05-27 11:28:29

标签: java swing object custom-controls

我想创建自己的类/对象,可以存储JTextField或JComboBox 相同的变量。这就是我到目前为止所做的:

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

我然后有一个存储我的参数对象的ArrayList。名称/类型/值实际上来自XML文件,但我已经简化了示例的代码:

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

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

I然后将组件添加到JPanel中......例如

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

在这个阶段一切正常!我得到ComboBoxes / JTextFields如期望的那样。但是,当我尝试 它检索文本/ SelectedItem,它给我从第一次初始化Parameter对象时的值,例如

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

问题是,如果我从界面修改JComboBox或JTextField ..它仍然使用初始化时的值。不是新修改的值。任何想法??

由于

0 个答案:

没有答案