2013-04-24 35 views
0

所以现在我有一个循环分配名称给玩家根据所选择的数量和需要以某种方式创建一个字符串来引用看起来有些像“lblplayer1”标签 - “lblplayer6”我的代码看起来是这样的:使用字符串引用标签我需要设置文本?

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

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

+2

你不能动态地在java中命名变量。使用'数组'或'Map'。 – 2013-04-24 16:11:33

回答

1

您制作Label秒的数组:

playerLabels[i].setText("hi"); 
+0

是不是noopplayers [我] ?? – 2013-04-24 16:02:10

+0

对不起,如果它不明确,但我需要设置一个标签的文本与一个变量实例lblplayeri其中我是索引数组,因此它会出来像lblplayer1.setText(“嗨”) – user2316413 2013-04-24 16:10:19

+0

@ user2316413:是的。你应该创建一个数组。 – SLaks 2013-04-24 16:32:37

0

动态的命名是不是在这种情况下,最好的办法。 (尽管可能通过反思)。

我建议你保持一个hashmap。以便您始终可以根据名称查找对象。或者,如果名称基于数字((label1,label2等)),则可以使用数组列表,以便始终可以根据索引查找对象。

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

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:这是不准确的代码只是虚设表示

+0

你能否解释一下如何实现?所有名字都基于数字player1,player2等。 – user2316413 2013-04-24 16:20:59

+0

检查答案。 – Ankit 2013-04-24 16:35:11

+0

我明白了,但我不需要创建它们已存在的标签我只需要设置它们的文本 – user2316413 2013-04-24 16:58:31

0

Array对象:

ObjectPlayer lblplayer[] = new ObjectPlayer[noofplayers]; 
for (int i=0; i <= noofplayers; i++) 
{ 
    lblplayer[i].setText("hi"); 
} 
+0

此代码中的ObjectPlayer意味着什么?这只是给我一个错误。 – user2316413 2013-04-24 16:42:41

+0

@ user2316413 woops,你刚刚复制了吗?我认为你应该用你的类或你想要使用的任何类来替换它,当然它有setText方法。 – cakil 2013-04-24 16:51:29

相关问题