Как добавить изображение в цикл for в java

#java #swing

#java #swing

Вопрос:

Это для игры в палача

 public static String letterGuessed;
public static String[] word = {"fuzzy","chess","elephant","cheesecake","charger","laptop","relevance","funnybone"};
public static int ran;
public static JLabel jl = new JLabel();

 public void wordGenerator(){


    int max = 8;
    int wordLength;
    int counter = 0;

    int min = 0;
    ran = (int)(Math.random()* (max - min  1)   min);

    wordLength = word[ran].length();

    while (counter <= wordLength){

        lblWord.setText( lblWord.getText()   "_ ");

        counter  ;

    }

}
public void getLetter(){

    letterGuessed = txtLetterGuess.getText();


}



public void rightOrWrongGuess() {

    if (word[ran].contains(letterGuessed)){

        //lblWord.replace.

    } else {

        //PICTURE CHANGE


    }

    lblGuessedLetters.setText(lblGuessedLetters.getText()   "_ "   letterGuessed);

}
private void btnGuessLetterActionPerformed(java.awt.event.ActionEvent evt) {   


    getLetter();
    rightOrWrongGuess();

    for (int i=0;i<=6;i  ) {
        if (!word[ran].contains(letterGuessed)) {
            lblPicture.setIcon(new ImageIcon("C:\Pic\hangman"   i   ".jpg")); 

        }
    }
  

Поэтому я попытался использовать счетчик для загрузки другого изображения каждый раз, когда они угадывают неправильную букву. Существует только 6 изображений, последним из которых является полный палач. i Или, counter похоже, не работает.

Я думаю, что я не получу быструю последовательность изображений, потому что им придется каждый раз нажимать кнопку. Спасибо.

Комментарии:

1. Я бы попробовал сначала создать строку для пути и поместить ее в переменную, а затем использовать переменную для создания объекта ImageIcon. Какую конкретно ошибку вы получаете?

2. Пара проблем. Этот цикл повторяется 7 раз из-за <= 6. Он также быстро загрузит все 6 изображений подряд

3. Почему это не работает?

4. Используйте несколько простых операторов печати, чтобы проверить, работает ли ваш счетчик. В цикле распечатайте i, в операторе if выведите местоположение изображения, затем посмотрите, что на самом деле работает не так, как ожидалось. ‘

5. @user3746363 Сначала заставьте другие вещи работать. Нужно построить дом перед городом 🙂

Ответ №1:

Вы не хотите использовать цикл for, это не имеет смысла, потому что вы будете перебирать все изображения сразу при каждом нажатии кнопки. Таким образом, если пользователь нажмет кнопку один раз, шесть изображений будут немедленно заменены, и, поскольку это делается в потоке событий Swing, они вообще не будут видны, за исключением последнего изображения. Нажмите кнопку еще раз и zip, произойдет то же самое.

Нет, вы хотите просто увеличить переменную счетчика int внутри вашего actionPerformed, а затем использовать этот int для изменения изображения один раз, а не в цикле for .

например, в псевдокоде,

 private void btnGuessLetterActionPerformed(java.awt.event.ActionEvent evt) {                                                         
  get the letter selected
  if the letter is correct, 
     update the guess word display to show the new letter in the word
  end if
  else // the letter is incorrect
     incorrectGuessCount  ;
     if incorrectGuessCount == max, game over, show whole image
     else 
        setIcon to the hangmanImageIconList.get(incorrectGuessCount)
     end else
  end else 
}
  

Кроме того, загрузите все изображения в ArrayList в начале программы, а не при нажатии кнопки.

Комментарии:

1. Это помогает. Моя последняя дилемма заключается в изменении изображения. Их шесть: hangman1.jpg , hangman2.jpg , hangman3.jpg , и т.д. Я хочу изменить число.

2. @user3746363: вы задаете вопрос в комментарии выше? Если да, то совсем не ясно, в чем заключается ваш вопрос.

3. по отношению к моему коду. Это то, что я пытался сделать с моим циклом for

4. Хорошо, но теперь вы понимаете, почему это плохая идея, почему циклу for нечего делать, верно?

5. да, я просто не знаю, как заставить каждое изображение появляться после каждого неправильного предположения