#java #swing #actionevent
#java #swing #actionevent
Вопрос:
Я пытаюсь создать swing-приложение, представляющее собой тест. Мне нужно, чтобы JLabel менялся при нажатии кнопки, но когда я нажимаю кнопку, приложение блокируется. Может ли кто-нибудь указать мне правильное направление?
Мой код нажатия кнопки приведен ниже:
private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {
String[] questions = {"test0","test1","test2","test3","test4","test5","test6"};
String[] answers = {"","","","","","",""};
int i = 0;
do {
jLabel2.setText(questions[i]);
index.setText(String.valueOf(i));
if (txtAnswer.getText().toLowerCase().equals(answers[i].toLowerCase())) {
i ;
jLabel2.setText(questions[i]);
}
else {
add(lblWrong);
}
}
while(i < 7);
}
Я получаю предупреждение о том, что параметр evt не использовался, может ли это быть проблемой?
Спасибо
Комментарии:
1. разве у вас не должно быть ваших меток в массиве?
2. Мои метки объявляются вне метода actionevent
3. Я не понимаю. Вы просто повторяете 7 раз и обновляете одну и ту же JLabel? В чем смысл этого
Ответ №1:
Вам не нужен цикл do while. Это захватывает вас в методе нажатия кнопки, как будто вы получаете неправильный ответ, вы продолжаете вводить else и не можете оставить его, останавливая работу приложения. Замените его на оператор if, проверяющий, является ли i < 7.
Ответ №2:
В else
состоянии вашего цикла вы вообще не добавляете 1 к i
— следовательно, вы потенциально можете оказаться в ситуации, когда оно никогда не увеличивается, таким образом, это будет бесконечный цикл (блокировка вашей программы).
Комментарии:
1. Я не хочу, чтобы они двигались дальше, пока не сделают все правильно. Разве я не должен увеличивать его только в операторе if?