我在ArrayList
名称中存储了10个名称。
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");
我想使用GLabel
对象在GUI窗口中显示这10个名称。目前,我有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
循环将创建相距40px的GLabel
对象,内部for
循环将填充每个{ {1}}对象,其字符串名称来自GLabel
名称。
但是,尽管外部ArrayList
循环有效(成功创建10个for
对象,相距40像素),内部循环似乎覆盖显示每个名称的每个标签,而不是单一名称。
我认为发生此问题是因为内循环只运行一次,而不是10次。但是,我不确定如何确保第一个循环运行10次,第二个循环仅运行一次。
答案 0 :(得分:0)
跳过两个循环并遍历names
数组
int position = 160;
for (String label : names) {
GLabel showName = new GLabel(label, (getWidth() / 2.0) - 100, (getHeight() / 2.0) - position);
showName.move(-showName.getWidth() / 2, -showName.getHeight());
showName.setColor(Color.WHITE);
add(showName);
position -= 40;
}