JAVA. Как обратиться к разным переменным из одного цикла?

66
19 марта 2022, 11:40

Есть 10 невидимых панелей.

private JPanel questionPanel1;
private JPanel questionPanel2;
private JPanel questionPanel3;
private JPanel questionPanel4;
private JPanel questionPanel5;
...

рандомно выбирается число: n дальше нужно сделать панели от 1 до n видимыми

for (int i = 1; i < n; i++)
{
    *['questionLabel' + i].setVisible(true);
    - в джава скрипте видел нечто похожее*
}

как это сделать в Java?

Answer 1

Можно так

ArrayList<JPanel> list = new ArrayList<>();
list.add(panel);
...
for (int i = 1; i < n; i++){
   list.get(i);
}
Answer 2

С помощью рефлексии:

MyClass myClass = new MyClass();
for (int i = 1; i <= n; i++)
    ((JPanel) MyClass.class.getDeclaredField("questionPanel" + i).get(myClass)).setVisible(true);

Примечания:
• i <= n, если n включительно;
• Напишите get(null), если поле статическое, но можно оставить и get(myClass);
• Вместо MyClass.class можно написать myClass.getClass().

READ ALSO
Объекты разной ширины

Объекты разной ширины

Такой вопрос, задача сделать некое подобие таблицы с данными, но количество столбцов должно зависеть от ширины содержимого, вот пример:

97
Взаимодействие классов ObjectInputStream, ObjectOutputStream, Runnable с JavaFX

Взаимодействие классов ObjectInputStream, ObjectOutputStream, Runnable с JavaFX

В общем, в потоке JavaFX у меня запускаются два других потока Server и ClientСоответственно нужно как-то в клиент из потока JavaFX передать параметр writeObject,...

179
Retrofit 2 Expected BEGIN_ARRAY but was BEGIN_OBJECT at line 1 column 2 path $

Retrofit 2 Expected BEGIN_ARRAY but was BEGIN_OBJECT at line 1 column 2 path $

Собственно, ошибка, как у всех, делаю как в ответах здесь, но работает неправильно

128