2012-05-17 2 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

Если вы создали JLabel как массив, как JLabel 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); 
} 
Смежные вопросы