Так у меня есть класс LayerCopper, который содержит несколько текстовых полей и несколько методов для установки значений в этих текстовых полях:Доступ к экземпляру класса в ArrayList цикле
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, а не инстанционную версию? Как я могу назвать инстанционную версию слоя?
Нам нужно больше кода, чтобы проверить себя, как JTextFields добавлены в панель? Как отображается панель? что находится в initComponents? –
попробуйте изменить CuWeightTextField и LayerNumJFormattedTextField на нестатические, если вы хотите установить их значения по-разному в разных слоях layerCopperX –
Ah dang, вот и все. У меня были текстовые поля, статические. Изменение их на нестатические исправлено. – Dan