0

所以现在我有一个循环来根据选择的数量为玩家分配名称,并且需要以某种方式构造一个字符串来引用看起来像“lblplayer1”-“lblplayer6”的标签,我的代码如下所示:

for (int i=1; i <= noofplayers; i++)
{
    String hello = "lblplayer" + i;
    hello?.setText("hi");
}

最后一行需要与 lblplayer (1-6) 的变量名称相当,最后一个数字中没有硬编码。基本上我需要以某种方式自动能够使用数组索引以某种方式设置每个标签的文本,但不知道如何以任何方式做到这一点?

4

3 回答 3

1

您应该创建一个 s 数组Label

playerLabels[i].setText("hi");
于 2013-04-24T15:59:51.117 回答
0

对象数组:

ObjectPlayer lblplayer[] = new ObjectPlayer[noofplayers];
for (int i=0; i <= noofplayers; i++)
{
    lblplayer[i].setText("hi");
}
于 2013-04-24T16:25:14.123 回答
0

在这种情况下,动态命名不是最好的方法。(尽管它可能通过反射来实现)。

我建议你维护一个哈希图。这样您就可以始终根据名称查找对象。

或者,如果名称基于数字,(label1、label2 等),您可以使用 arraylist,以便您始终可以根据索引查找对象。

例如,第一种方法可以这样使用:

public static HashMap<String, Label> map = new HashMap<>();
public void createPlayer(int playerindex){
    Label label = new Label();
    map.put("player"+index, label);
}

public Label getPlayerLabel(int playerindex){
    return map.get("player"+index)  
}

Ps:这不是确切的代码,只是虚拟表示

于 2013-04-24T16:18:01.180 回答