Como mostrar un JFrame por algunos segundos y despues que se cierre

jorluis_841
02 de Septiembre del 2005
Hola a todos no se como hacer esto, yo tengo un JFrame que contiene una imagen, el JFrame esta sin botones, ni bordes. Lo que quiero es mostrar ese JFrame pero por algunos segundos
no se si se pueda hacer con alguna funcion o no se denme alguna idea, ayudeeeeennnnn........

chuidiang
02 de Septiembre del 2005
Hola:

Con Thread.currentThread.sleep(milisegundos) detienes la ejecucion durante los milisegundos que quieras. Tendrías que hacer algo como esto

muestraFrame();
sleep();
ocultaFrame();

Según dónde y cómo lo hagas, puedes tener pegas, como que el Frame se muestre gris sin nada dentro. Si ocurre esto, debes hacer un hilo asi

muestraFrame();
Thread hilo = new Thread ( new Runnable()
{
public void run()
{
espera();
ocultaFrame();
}
}
hilo.start();

Prueba a ver. Si hay alguna pega vuelve a escribir.

Se bueno.

jorluis_841
02 de Septiembre del 2005
Gracias voy a probarlo....

isapal
02 de Septiembre del 2005
Tambien puedes buscar como hacerlo por medio de un splash windows.. en este momento yo estoy trabajando en algo parecido.. el codigo que tengo funciona para lo que tu quieres porque solo muestra la ventana unos milisegundos, pero yo debo crear un thread para sincronizarlo con una aplicaciòn y no he podido hacerlo el codigo que tengo puede servirte:

final class SplashWindow1 extends javax.swing.JWindow
{
public SplashWindow1(String filename, Frame f, int waitTime)
{
super(f);

//Etiqueta para mostrar la imagen
this.setBackground(new java.awt.Color(0, 0, 85));
JLabel ImagIcon = new JLabel (new ImageIcon (filename));
JLabel I = new JLabel("Titulo", javax.swing.JLabel.CENTER);


JProgressBar pbar = new JProgressBar();
pbar.setStringPainted(false);

//Añadir la Etiqueta al contenedor

this.setBackground(new java.awt.Color(204, 204, 255));
getContentPane().add(ImagIcon, BorderLayout.NORTH);
getContentPane().add(pbar, BorderLayout.CENTER);
getContentPane().add(I, BorderLayout.SOUTH);
pack();

//Calcular tamaño de la pantalla
Dimension screenSize = Toolkit.getDefaultToolkit().getScreenSize();
Dimension labelSize = ImagIcon.getPreferredSize();

//Situar la ventana en el centro de la pantalla

setLocation(screenSize.width/2 - (labelSize.width/2) , screenSize.height/2 - (labelSize.height/2));
addMouseListener(new MouseAdapter()
{
public void mousePressed (MouseEvent e)
{
setVisible (false);
dispose();
}
});

//tiempo visible 500 miliseg

final int pause = waitTime;

// Objeto que cierra la ventana

final Runnable closerRunner = new Runnable()
{
public void run()
{
setVisible(false);
dispose();
}
};

Runnable waitRunner = new Runnable()
{
public void run()
{
try
{
Thread.sleep(pause);
SwingUtilities.invokeAndWait(closerRunner);
}
catch(Exception e)
{
e.printStackTrace();
}
}
};
setVisible(true);
//Para crear el Hilo
Thread splashThread = new Thread(waitRunner, "SplashThread");
splashThread.start();

}

}

Y lo llamas de esta forma:

SplashWindow1 miSplash = new SplashWindow1("Archivo.gif", this, 4000 );

Espero que te sirva.. y si te envian algo sobre hilos me cuentas.. que necesito entender como unir lo anterior a threads..

jorluis_841
02 de Septiembre del 2005
Oye en serio muchas gracias por ayudar, si me pasan algo sobre hilos te los mando, ok?