2013-04-24 79 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