在arraylist循环中访问类的实例

时间:2014-10-15 16:07:56

标签: java class arraylist instance

所以我有一个LayerCopper类,它包含一些文本框和一些方法来设置这些文本框中的值:

public class LayerCopper extends javax.swing.JPanel {

public LayerCopper() {
initComponents();
}

private static javax.swing.JFormattedTextField CuWeightTextField;
private static javax.swing.JFormattedTextField LayerNumJFormattedTextField;

...
...
...

public void setLayerNumberText(int layerNumber) {
LayerNumJFormattedTextField.setText("" + layerNumber);
}

public void setLayerCuThickness(double CuThickness) {
CuWeightTextField.setValue(CuThickness);
}

}

我还有另一个类StackupCalculator,里面有多个LayerCopper面板实例。我有一个arraylist,它包含LayerCopper面板的每个实例:

static ArrayList<LayerCopper> layerSet_Copper = new ArrayList<>();

...
...
...

public void createLayerSetArray() {

  layerSet_Copper.add(layerCopper1);
  layerSet_Copper.add(layerCopper2);
  layerSet_Copper.add(layerCopper3);
  layerSet_Copper.add(layerCopper4);
  layerSet_Copper.add(layerCopper5);

  initializeLayerArrayValues();
}

当我的initializeLayerArrayValues运行时,它应该用文本填充几个文本字段:

private void initializeLayerArrayValues() {
for (int i = 0; i < layerSet_Copper.size(); i++) {      
    layerSet_Copper.get(i).setLayerNumberText(i + 1);
    layerSet_Copper.get(i).setLayerCuThickness(0.750);
}
}

当我运行该程序时,它不会更新字段。我猜我正在调用主类LayerCopper而不是它的实例版本?我该如何调用图层的实例版本?

2 个答案:

答案 0 :(得分:0)

根据您的说法,您尚未实例化LayerCopper。您需要为其创建一个新实例,并制作layerCopper1layerCopper2等。然后使用createLayerSetArray()

像这样:

LayerCopper lc = new LayerCopper();
// create values different layerCoppers to go in layerSet_Copper
lc.createLayerSetArray();

我不太了解你班级的内部运作,所以我错了。

答案 1 :(得分:0)

将文本字段从静态更改为非静态为我修复了它。 /欢呼声