如何在java中的for循环中添加图像

时间:2014-06-16 21:00:06

标签: 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张照片,最后一张是完整的刽子手。 icounter似乎不起作用。

我认为我不会得到快速连续的图片,因为他们每次都必须点击按钮。 感谢。

1 个答案:

答案 0 :(得分:4)

你不想使用for循环,这没有任何意义,因为你会在每个按钮按下时循环所有图像,立即。因此,如果用户按下按钮一次,则将立即交换六个图像,并且由于它是在Swing事件线程上完成的,因此除了最后一个图像之外,它们根本不会被看到。再次按下按钮,拉链,同样的事情发生。

不,您只想简单地在actionPerformed中增加一个int计数器变量,然后使用该int更改图像一次,而不是在for循环中。

e.g。在伪代码中,

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中,而不是按下按钮。