所以我有一个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而不是它的实例版本?我该如何调用图层的实例版本?
答案 0 :(得分:0)
根据您的说法,您尚未实例化LayerCopper
。您需要为其创建一个新实例,并制作layerCopper1
,layerCopper2
等。然后使用createLayerSetArray()
。
像这样:
LayerCopper lc = new LayerCopper();
// create values different layerCoppers to go in layerSet_Copper
lc.createLayerSetArray();
我不太了解你班级的内部运作,所以我错了。
答案 1 :(得分:0)
将文本字段从静态更改为非静态为我修复了它。 /欢呼声