SplashScreen ERRO!

2 respostas
tandrade

Simplesmente não está aparecendo nada quando inicializo meu programa :confused:

import java.awt.Cursor;
import java.awt.Dimension;
import java.awt.Frame;
import java.awt.Graphics;
import java.awt.Image;
import java.awt.MediaTracker;
import java.awt.Toolkit;
import java.awt.Window;

public class Splash extends Window {
    // Imagem que ira aparecer no Splash
    private final String imgName = "//server1234/drive1234/pasta1234/programa1234/images/logo.png";
    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 Frame());
        setVisible(false);
        
        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 imagem
        g.drawImage(splashImage, 0, 0, getBackground(), this);
    }
}

No main:

public static void main(String args[]) {
        java.awt.EventQueue.invokeLater(new Runnable() {
            public void run() {
                Splash.getInstance().openSplash();
                new Principal().setVisible(true);
            }
        });
    }

Alguem pode ajudar?

2 Respostas

Ironlynx

tandrade, vc tem absoluta certeza que a imagem está no lugar certo(ou o caminho)???
E vc tá usando uma versão java muito antiga?No Mustang(java 6)é muuitomais fácil:
no seu manifest.mf:

Manifest-Version: 1.0 Main-Class: Test SplashScreen-Image: logo.png
Veja mais: http://java.sun.com/javase/6/docs/api/java/awt/SplashScreen.html

tandrade

Simmmmmm sim, absoluta certeza (desculpa o delay p responder, estive sem PC esses dias)

Ocorre o seguinte, quando executo o programa pelo netbeans ela não aparece, porém quando miniminizo a tela do netbeans e maximizo a do programa, rapidamente aparece a splash e depois some. Engraçado é que isso se repete toda vez que abro a janela. No entanto, quando já estou com o .jar, para executar, nada aparece na inicialização :confused:

Criado 30 de abril de 2008
Ultima resposta 6 de mai. de 2008
Respostas 2
Participantes 2