2012-05-17 61 views
2

所以我有少量的對象(10 JLabels),我想根據用戶輸入更改文本。如何解析對象名稱的字符串?

初始化的標籤是這樣的:

private JLabel j1 = new JLabel(); 
private JLabel j2 = new JLabel(); 
private JLabel j3 = new JLabel(); 
...etc 

,並繼續到10

如何質量變化每個JLabel的文本,而無需編寫每次每個變量的名字嗎?

我有一個像下面的想法,但我不知道如何從字符串的名稱訪問變量。

for(int x=1;x<=10;x++){ 
    String d = (String) x; //this isn't what d equals, it's example. 
    String label = "j"+x; 
    label.setText(d); //I know this won't work, but this is what I want to do 
} 

有什麼辦法可以做到沒有錯誤嗎?

回答

4

這是一個極好的機會,用一個數組來存儲您的JLabel對象:

private JLabel[] labels = new JLabel[10]; 

for (int i=0; i<10; i++) { 
    labels[i] = new JLabel(); 
} 

/* ... */ 

for (int i=0; i<10; i++) { 
    labels[i].setText("Hello from label " + i); 
} 
+3

如果您事先不知道標籤的數量,則可以使用[ArrayList](http://docs.oracle.com/javase/6/docs/api/java/util/ArrayList.html) 。 – Nivas

3

如果您已經創建了JLabelJLabel j[10] = new JLabel[10]數組。然後,您可以使用for循環爲每個索引創建一個實例,然後設置文本。

for(int x=0;x<10;x++){ 
    j[x] = new JLabel(); 
    String d = String.valueOf(x); 
    String label = "j"+x; 
    j[x].setText(d); 
}