elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Únete al Grupo Steam elhacker.NET


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación General
| | |-+  Java
| | | |-+  Pregunta jFrame
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Pregunta jFrame  (Leído 1,558 veces)
MasterPunk


Desconectado Desconectado

Mensajes: 447


(-A-)


Ver Perfil WWW
Pregunta jFrame
« en: 10 Junio 2013, 14:58 pm »

Hola, estoy haciendo una pequeña aplicación gráfica (llamémosla "juego") que resumidamente es asi:

Código
  1. package juego;
  2.  
  3. import java.awt.Color;
  4. import java.awt.Graphics;
  5. import java.awt.Graphics2D;
  6. import java.awt.RenderingHints;
  7. import javax.swing.JFrame;
  8. import javax.swing.JPanel;
  9.  
  10. public class Juego extends JPanel {
  11.  
  12.    void move() {
  13.        //no entrare en detalles
  14.    }
  15.  
  16.    @Override
  17.    public void paint(Graphics g) {
  18.        super.paint(g);
  19.        Graphics2D g2d = (Graphics2D) g;
  20.        g2d.setRenderingHint(RenderingHints.KEY_ANTIALIASING,
  21.                RenderingHints.VALUE_ANTIALIAS_ON);
  22.        g2d.setColor(Color.red);
  23.        g2d.fillRect(100, 100, 100, 100);//pinta un cuadrado rojo
  24.    }
  25.  
  26.    public static void main(String[] args) {
  27.        JFrame frame = new JFrame();
  28.        Juego game = new Juego();
  29.        frame.add(game);
  30.        frame.setSize(300, 300);
  31.        frame.setVisible(true);
  32.        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);  
  33.        while (true) { //bucle de juego
  34.            game.move();
  35.            game.repaint();
  36.            try {
  37.                Thread.sleep(15);
  38.            } catch (InterruptedException ex) {
  39.            }
  40.        }
  41.    }
  42. }
  43.  

El problema es que cuando intento que la ventana se cree al pulsar un botón de otro jFrame:

Código
  1. private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {                                        
  2.        JFrame frame = new JFrame();
  3.        Juego game = new Juego();
  4.        frame.add(game);
  5.        frame.setSize(300, 300);
  6.        frame.setVisible(true);
  7.        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);  
  8.        while (true) { //bucle de juego
  9.            game.move();
  10.            game.repaint();
  11.            try {
  12.                Thread.sleep(15);
  13.            } catch (InterruptedException ex) {
  14.            }
  15.        }
  16.    }
  17.  

La pantalla sale en blanco y no me deja cerrarla. ¿Sabríais decirme a que se debe?
Gracias


En línea

RyogiShiki


Desconectado Desconectado

Mensajes: 745


げんしけん - Hikkikomori FTW!!!


Ver Perfil WWW
Re: Pregunta jFrame
« Respuesta #1 en: 10 Junio 2013, 18:37 pm »

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


En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
Ayuda con 2 JFrame plz
Java
visualfree 3 5,079 Último mensaje 24 Abril 2009, 05:03 am
por visualfree
JFrame MDI
Java
[GB] 0 3,255 Último mensaje 23 Noviembre 2009, 23:34 pm
por [GB]
JFrame « 1 2 »
Java
nerckos 10 8,688 Último mensaje 8 Mayo 2010, 15:58 pm
por nerckos
Llamar un Jframe
Java
blood_brother 8 12,096 Último mensaje 9 Junio 2010, 08:29 am
por blood_brother
pregunta simple sobre JFrame en netbeans ,como Cerrar ventana especifica????
Java
XpandyX 3 60,548 Último mensaje 1 Mayo 2014, 19:04 pm
por waltgm
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines