2014-10-15 4 views
0

Так у меня есть класс 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, а не инстанционную версию? Как я могу назвать инстанционную версию слоя?

+0

Нам нужно больше кода, чтобы проверить себя, как JTextFields добавлены в панель? Как отображается панель? что находится в initComponents? –

+1

попробуйте изменить CuWeightTextField и LayerNumJFormattedTextField на нестатические, если вы хотите установить их значения по-разному в разных слоях layerCopperX –

+0

Ah dang, вот и все. У меня были текстовые поля, статические. Изменение их на нестатические исправлено. – Dan

ответ

0

По вашему мнению, вы не создали экземпляр LayerCopper. Вам нужно сделать новый экземпляр и сделать layerCopper1, layerCopper2 и т. Д. Затем используйте createLayerSetArray().

Как так:

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

Я не совсем понимаю внутреннюю работу вашего класса, так что я мог бы быть неправильно.

0

Изменение текстовых полей от статического до нестатического исправлено для меня./cheers

Смежные вопросы