2016-10-13 7 views
0

Я пытаюсь постоянно создавать JLabels для каждого имени в ArrayList PantryNames. Вот мой текущий код:Как динамически создавать JLabels с разными именами

for(int i = 0; i < FoodApp.getPantryNames().size(); i++){ 
     JLabel lblNewLabel = new JLabel((String) FoodApp.getPantryNames().get(i)); 
     contentPane.add(lblNewLabel, BorderLayout.WEST); 
    } 

Я хочу lblNewLabel быть установлен в "ингредиент" + (я + 1). Например, первая пища будет ингредиентом1 и так далее. Кроме того, в contentPane lblNewLabel должен быть ингредиентом + (i + 1). Благодаря!

+0

Пытается создать динамически именованные переменные, а не путь Java, и это ставит слишком большое значение для имен переменных, чем они должны быть заданы. Они почти не существуют в Java-коде, и гораздо важнее ** ссылки ** на объекты. См. [Этот аналогичный вопрос] (http://stackoverflow.com/questions/6729605/assigning-variables-with-dynamic-names-in-java) для получения дополнительной информации. –

ответ

0

Это не то, как переменные работают на Java, вы не можете динамически устанавливать имена переменных, подобные этому. Вместо этого я бы использовал List<JLabel>.

ArrayList<JLabel> labels = new ArrayList<JLabel>(); 
for(int i = 0; i < FoodApp.getPantryNames().size(); i++){ 
    JLabel temp = new JLabel((String) FoodApp.getPantryNames().get(i)); 
    labels.add(temp); 
    contentPane.add(temp, BorderLayout.WEST); 
} 

В качестве альтернативы вы можете просто позвонить contentPane.getComponents() всякий раз, когда вы снова нужны этикетки.