Galera, eu estava lendo o artigo que esta publicado aqui no guj que fala a respeito de Splash Scren, porem fui implementar o código, mas a imagem do splash nao aparece, me ajudem a verificar porque que nao esta sendo executando corretamente.
Estou iniciando o main com o seguinte código;
public static void main(String[] args) {
//Faz o Splash aparecer na tela
Splash.getInstance().openSplash();
JFrmLogin frm = new JFrmLogin ();// Tela que aparece depois que o splash e executado, mas o splash nao esta aparecendo
frm.initApplication();
}
Segue o classe Splash que estou utilizando para carregar a imagem;
import java.awt.BorderLayout;
import java.awt.Dimension;
import java.awt.Font;
import java.awt.Frame;
import java.awt.Graphics;
import java.awt.GraphicsConfiguration;
import java.awt.Image;
import java.awt.MediaTracker;
import java.awt.Toolkit;
import java.awt.Window;
import java.awt.Cursor;
import javax.swing.JFrame;
import javax.swing.JOptionPane;
public class Splash extends Window
{
// Mensagem a ser mostrada junto com a imagem
private final String message = "Splash";
// Imagem que ira aparecer no Splash
private final String imgName = "splash_guj.jpg";
Image splashImage;
Toolkit toolkit;
private static Splash splash;
// Singleton pra garantir apenas uma unica instancia na memoria
static {
splash = new Splash();
}
private Splash()
{
super(new JFrame());
//JOptionPane.showMessageDialog(this,"Criando Splash ...");
System.out.println("Criando Splash()...");
setVisible(true);
splashImage = null;
toolkit = Toolkit.getDefaultToolkit();
}
public static Splash getInstance()
{
return splash;
}
/**
* Method initSplash.
*/
private void initSplash()
{
// Carrega a imagem na memoria
MediaTracker media = new MediaTracker(this);
splashImage = toolkit.getImage(imgName);
if (splashImage != null) {
media.addImage(splashImage, 0);
try {
media.waitForID(0);
}
catch (InterruptedException ie) {}
}
// Configura o tamanho do splash e a posicao na tela
setSize(splashImage.getWidth(this), splashImage.getHeight(this));
Dimension screenSize = Toolkit.getDefaultToolkit().getScreenSize();
Dimension size = getSize();
if (size.width > screenSize.width)
size.width = screenSize.width;
if (size.height > screenSize.height)
size.height = screenSize.height;
setLocation((screenSize.width - size.width) / 2, (screenSize.height - size.height) / 2);
setVisible(true);
}
public void openSplash()
{
setCursor(new Cursor(Cursor.WAIT_CURSOR));
initSplash();
}
public void finish()
{
setVisible(false);
dispose();
}
public void paint(Graphics g)
{
// Apenas desenha a nossa mensagem em cima da imagem
g.drawImage(splashImage, 0, 0, getBackground(), this);
g.setFont(new Font("Arial", Font.BOLD, 26));
g.drawString(message, (int)(splashImage.getWidth(this) / 2) - 80, 30);
}
}
Desde ja agradeço a atenção de todos.