Я разрабатываю свою первую игру AWT.Я пытаюсь установить значок для кнопки, когда она нажата (при некоторых условиях).Вот соответствующая часть кода:
if (tileIsMemTile) {
System.out.println("!!! Right Tile !!!");
memTile.setBackground(Color.red);
numberOfMemTilesToGuess -= 1;
System.out.println("It rest " + numberOfMemTilesToGuess + " tiles to guess");
} else {
System.out.println("!!! Wrong Tile !!!");
Icon falseTileIcon = new ImageIcon(getClass().getResource("wrong.png"));
memTile.setIcon(falseTileIcon);
wrongGuessAction();
}
System.out.println(">>> Action processed >>>");
if (numberOfMemTilesToGuess == 0) {
System.out.println("\n END OF THE LEVEL");
System.out.println("Congratulations, you guessed all the tiles without error !! \n");
dispose();
//TODO !!!! SHOW INTERLEVEL INFORMATION !!!!
if (memGridDimX != maxDimX && memGridDimY != maxDimY) {
if (memGridDimX == memGridDimY)
new Memory(memGridDimX, memGridDimY + 1);
else
new Memory(memGridDimX + 1, memGridDimY);
} else
System.out.println("You have a really good memory my friend!");
}
}
private void wrongGuessAction() {
//TODO !!! FAILED IN LEVEL MESSAGE !!!
try { Thread.sleep(2000); } catch (Exception e1) {}
dispose();
if (memGridDimX == initialDimX && ( memGridDimY == initialDimY || memGridDimY == initialDimY + 1))
new Memory(initialDimX, initialDimY);
else
new Memory(memGridDimX - 1, memGridDimY - 1);
}
Так что здесь, после того, как я установил иконку jbutton, я хочу увидеть ее, прежде чем избавиться от старого jframe и запустить новый (следующий уровень в игре),но несмотря на попытки отложить выполнение функции dispose () с помощью:
try {Thread.sleep (2000);} catch (Exception e1) {}
и с любыми другими функциями задержки (такими как сравнение currenttimemillis (), to-t1), которые я даже пытался использовать;
memTile.setBackground(Color.green);
int i = 0;
do {
System.out.println(i); i++;
} while (!memTile.getIcon().equals(Color.green));
на самом деле последний, кажется, работает, но затмение переходит в режим отладки без каких-либо исключений, и это не останавливает процесс, даже когда я закрываю фрейм.
Так что ничего не работает.В каждом случае рамка закрывается, и я не вижу значок на кнопке.если я оставляю комментарий и оставляю его для создания следующего кадра, старый кадр остается, значок загружается на кнопку, и создается новый кадр.Я не мог понять принцип выполнения метода setIcon.
Заранее спасибо.
// memTile.setBackground (Color.green);// int i = 0;// do {//
// System.out.println (i);я ++;//} while (! memTile.getIcon (). equals (Color.green));