У меня есть две кнопки прослушивания для игрового поля с использованием java swing.Java Swing Button Слушатели не работают
Сначала создается сетка тетриса, а затем добавляется функциональность в каждом прослушивателе кнопок.
Я поставил доску вверх, как это в моем Play.java:
final TetrisGame g = new TetrisGame(11,1);
final BoardGraphics graphics = new BoardGraphics(TetrisBoard.BOARD_WIDTH, 40, g);
Кнопка слушателей затем создается в том же Play.java:
graphics.btnStart.addActionListener(new ActionListener()
{
public void actionPerformed(ActionEvent e)
{
Action arc = p.getAction(g);
g.update(arc);
graphics.colours.clear();
graphics.setColor(g.getBoard().getGrid());
while (arc instanceof Store){
arc = p.getAction(g);
g.update(arc);
graphics.colours.clear();
graphics.setColor(g.getBoard().getGrid());
}
graphics.tiles.redraw();
System.out.println();
System.out.println(g.toString());
System.out.println();
}
});
graphics.btnAuto.addActionListener(new ActionListener()
{
public void actionPerformed(ActionEvent e)
{
while (!g.gameEnded()){
Action arc = p.getAction(g);
g.update(arc);
graphics.colours.clear();
graphics.setColor(g.getBoard().getGrid());
while (arc instanceof Store){
arc = p.getAction(g);
g.update(arc);
//graphics.colours.clear();
graphics.setColor(g.getBoard().getGrid());
}
graphics.tiles.redraw();
System.out.println();
System.out.println(g.toString());
System.out.println();
/*try {
Thread.sleep(1000);
} catch (InterruptedException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
}*/
}
}
});
btnStart прекрасно работает, нажав это когда-то, рисуя тетрасбор в соответствии со следующим шагом, данным агентом AI.
Я хотел бы, чтобы btnAuto воспроизводил каждый ход без нажатия кнопки btnStart для генерации движения до конца. Тем не менее, мой btnAuto не рисует ничего на сетке, а конечное состояние игры, состояние финиша.
Может ли кто-нибудь понять, почему это может быть не перекрашивание сетки после каждого движения, генерируемого в цикле while?
Это сработало отлично .. и также решает мою проблему использования таймера внутри цикла while, не помещая мое приложение в режим сна. –
@DizzyChamp: рад, что это помогло! –
В настоящее время у меня есть класс с вложенным классом, который расширяет JPanel. Рисунок сетки и getGraphics() выполняется внутри вложенного класса.Родительский класс создает компонент и устанавливает макет GUI в целом. –