私が使用している 2 つの異なるバージョンのコードは、前述のように、最初のバージョンは問題なく動作します。印刷をデバッグして、すべての値と条件を手動で確認します)
/* properly updates dice[] JLabel icons */
for (int i = 0; i < game.getToRoll(); i ++){
//sets rolled dice to actual values
dice[i].setIcon(dicePic[(game.getDice(i).getFaceValue())]);
}
/* loops properly, generates properly, does not update icons */
Die x = new Die();
int animate = 0;
while(animate < 10){
for (int i = 0; i < 6; i++ ){
x.roll();
if (i <= (game.getToRoll() -1))
dice[i].setIcon(dicePic[x.getFaceValue()]);
else
dice[i].setIcon(dicePic[0]);
}
panel[1].repaint();
panel[1].validate();
animate++;
try{
Thread.sleep(100);
}
catch(Exception e){
e.printStackTrace();
}
}
問題の原因について何らかの考えを探し回っていますが、「再描画して検証すると、機能しないものを修正できる場合がある」ということ以外には遭遇していません。
前述のように、デバッグにより、コード フローが完全に期待どおりに機能していることがわかりました。2 番目の例では、画像アイコンが null になっているだけです。