Hola, estoy haciendo una pequeña aplicación gráfica (llamémosla "juego") que resumidamente es asi:
package juego;
import java.awt.Color;
import java.awt.Graphics;
import java.awt.Graphics2D;
import java.awt.RenderingHints;
import javax.swing.JFrame;
import javax.swing.JPanel;
public class Juego
extends JPanel {
void move() {
//no entrare en detalles
}
@Override
super.paint(g);
g2d.fillRect(100, 100, 100, 100);//pinta un cuadrado rojo
}
public static void main
(String[] args
) { Juego game = new Juego();
frame.add(game);
frame.setSize(300, 300);
frame.setVisible(true);
frame.
setDefaultCloseOperation(JFrame.
EXIT_ON_CLOSE); while (true) { //bucle de juego
game.move();
game.repaint();
try {
}
}
}
}
El problema es que cuando intento que la ventana se cree al pulsar un botón de otro jFrame:
private void jButton1ActionPerformed
(java.
awt.
event.
ActionEvent evt
) { Juego game = new Juego();
frame.add(game);
frame.setSize(300, 300);
frame.setVisible(true);
frame.
setDefaultCloseOperation(JFrame.
EXIT_ON_CLOSE); while (true) { //bucle de juego
game.move();
game.repaint();
try {
}
}
}
La pantalla sale en blanco y no me deja cerrarla. ¿Sabríais decirme a que se debe?
Gracias
Estas haciendo una llamada bloquente dentro del EDT (Event Dispath Thread) que es donde se ejecutan las aplicaciones Swing. En otras palabras los ciclos while(true) deben ejecutarse en su propio Thread.
Saludos