У меня есть 10 имен, хранящихся в ArrayList
именах.
ArrayList<String> names = new ArrayList<String>(10);
name.add(name); // the value of this is "Zac"
names.add("undefined1");
names.add("undefined2");
names.add("undefined3");
names.add("undefined4");
names.add("undefined5");
names.add("undefined6");
names.add("undefined7");
names.add("undefined8");
names.add("undefined9");
Я хочу отобразить эти 10 имен в окне графического интерфейса, используя объект GLabel
. В настоящее время у меня есть 10 жестко закодированных GLabel
объектов, которые принимают каждую отдельную строку имени, но я чувствую, что это очень многократно.
GLabel showName1 = new GLabel(name, (getWidth() / 2.0) - 100, (getHeight() / 2.0) - 160); // this last integer (160) is the position
showName1.move(-showName1.getWidth() / 2, -showName1.getHeight());
showName1.setColor(Color.WHITE);
add(showName1);
GLabel showName2 = new GLabel("undefined", (getWidth() / 2.0) - 100, (getHeight() / 2.0) - 120); // this last integer (120) is the position
showName2.move(-showName2.getWidth() / 2, -showName2.getHeight());
showName2.setColor(Color.WHITE);
add(showName2);
...
Я хотел бы использовать циклическую конструкцию для отображения каждой из них. Единственная разница между каждым жестко закодированным GLabel
заключается в отображаемом имени и позиции . Позиция должна быть уменьшена на 40 для каждой метки .
int counter = 10;
for (int position = 160; counter > 0; position -= 40) {
for (String name: names) {
GLabel showName = new GLabel(name, (getWidth() / 2.0) - 100, (getHeight() / 2.0) - position);
showName.move(-showName.getWidth() / 2, -showName.getHeight());
showName.setColor(Color.WHITE);
add(showName);
}
counter--;
}
Я настроил этот вложенный цикл for
, исходя из того, что внешний цикл for
будет создавать объекты GLabel
с разницей в 40 пикселей, а внутренний цикл for
будет заполнять каждый объект GLabel
с использованием имени строки из ArrayList
имен.
Однако, хотя внешний цикл for
работает (объекты размером 10 GLabel
успешно созданы на расстоянии 40px), кажется, что внутренний перезаписывает каждую метку, отображая каждое имя , а не одно имя, как предполагалось.
Я думаю, что эта проблема возникает, потому что внутренний цикл должен выполняться только один раз, а не 10 . Однако я не уверен, как обеспечить, чтобы первый цикл выполнялся 10 раз, а второй - только один раз.