2015-12-10 3 views
2

Java код:Как увеличить имена переменных, созданные jlabels, используя for loop?

for (int i = 0; i < 10;++i) { 
    if (i == 9){ 
    lbl_ichar.setText(String.valueOf(word.charAt(i))); 
    } 
} 

Этот код показывает сообщение об ошибке (ошибка компиляции времени: не может найти символ символ: переменная lbl_ichar класса) под словом lbl_ichar .Но я уже созданные компоненты JLabel имен переменных lbl_0char, lbl_1char, lbl_2char ...... upto lbl_9char.

Я хочу позвонить по имени lbl_ichar вместо lbl_9char. Это возможно в java? Если да, то как его кодировать?

+1

Что вы подразумеваете под "этот код показывает сообщение об ошибке"? Вы получаете ошибки компилятора? Неверный текст на этикетке? Что-то другое? Пожалуйста, уточните и * включите * фактическую ошибку (в полном объеме, полную и неотредактированную). –

+0

да время компиляции erroe – 2015084

+0

Ум, говорящий нам **, который ** компилирует ошибку времени? –

ответ

1

попробовать сделать что-то же самое,

JLabel lb_char [ ] = новый JLable [10];

затем после в Loop вы можете обратиться, что метки, как таким образом,

for (int i = 0; i < 10;++i) { 

    lbl_char[i].setText(String.valueOf(word.charAt(i))); 
} 
2

Похоже, что вы пытаетесь создать имя переменной динамически во время выполнения:

JLabel lbl_1char = new JLabel(); 
JLabel lbl_2char = new JLabel(); 
// ... 

for (int i = 0; i < 10; ++i) { 
    lbl_ichar.setText(String.valueOf(word.charAt(i))); 
    //^
} 

Это не работает. Вы не можете создать имя переменной во время выполнения. Использование массива вместо:

JLabel[] lbl_char = new JLabel[10]; 
lbl_char[0] = new JLabel(); 
lbl_char[1] = new JLabel(); 
// ... 

for (int i = 0; i < lbl_char.length; i++) { 
    lbl_char[i].setText(String.valueOf(word.charAt(i))); 
} 

Или, еще лучше, вместо того, чтобы использовать сырые массивы, использовать ArrayList:

List<JLabel> lbl_char = new ArrayList<>(); 
lbl_char.add(new JLabel()); 
lbl_char.add(new JLabel()); 
// ... 

for (JLabel lbl : lbl_char) { 
    lbl.setText("Whatever"); 
} 
+0

Yep, используйте массив меток или обращайтесь к меткам через отражение. –

0

Вы не можете напрямую использовать переменную цикла я ценю как «lbl_ichar».

Вы хотите изменить значение, только если ваше значение i равно 9, или вы хотите установить новое значение для «lbl_9char»?

Смежные вопросы