Problema com SplashScreen

10 respostas
marciofermino

Amigos utilizo os seguintes métodos para a apresentação de Splash. ele rodar mais quando eu pego meu .jar juntamente
com a pasta lib e jogo este projeto em outra pasta a imagem não mais aparece.

Eu criei tb um método para me retornar o caminho da aplicação mais mesmo assim não dá. não sei mais oque fazer.
package controle;

import controle.utils.Utils;
import java.awt.*;
import javax.swing.*;

public class SplashScreen extends JWindow {

    private int duration;

    public SplashScreen(int d) {
        duration = d;
    }

    public void showSplash() {
        JPanel content = (JPanel) getContentPane();
        content.setBackground(Color.white);


        int width = 474;//474

        int height = 370;//200

        Dimension screen = Toolkit.getDefaultToolkit().getScreenSize();
        int x = (screen.width - width) / 2;//2

        int y = (screen.height - height) / 2;//2

        setBounds(x, y, width, height);


        Utils u = new Utils();
        u.getApplicationPath();
        String caminho = u.getApplicationPath() + "/splash_guj.jpg";

        System.out.println(caminho.replace("\", "/"));
        JLabel label = new JLabel(new ImageIcon(caminho));
        JLabel copyrt = new JLabel("JAVA TECNOLOGIA,TODOS OS DIREITOS RESERVADOS", JLabel.CENTER);
        copyrt.setFont(new Font("Sans-Serif", Font.BOLD, 12));
        content.add(label, BorderLayout.CENTER);
        content.add(copyrt, BorderLayout.SOUTH);

        setVisible(true);


        try {
            Thread.sleep(duration);
        } catch (Exception e) {
        }
        setVisible(false);
    }

    public void showSplashAndExit() {
        showSplash();
        System.exit(0);
    }

    @SuppressWarnings("deprecation")
    public static void main(String[] args) {
        SplashScreen splash = new SplashScreen(2000);
        splash.showSplash();

        new menu().setVisible(true);

    }
}
Caminho da aplicação
public String getApplicationPath() {
        //u.getApplicationPath());  


        String url = getClass().getResource(getClass().getSimpleName() + ".class").getPath();
        
        File dir = new File(url).getParentFile();
        String path = null;

        if (dir.getPath().contains(".jar")) {
            path = findJarParentPath(dir);
        } else {
            path = dir.getPath();
        }
        try {
            return URLDecoder.decode(path, "UTF-8");
        } catch (UnsupportedEncodingException e) {
            return path.replace("%20", " ");
        }
    }

    private String findJarParentPath(File jarFile) {
        while (jarFile.getPath().contains(".jar")) {
            jarFile = jarFile.getParentFile();
        }
        return jarFile.getPath().substring(6);
    }
}

Obrigado.,

10 Respostas

mchiareli

qual versão do java você está usando?

marciofermino

1.6

mchiareli

pq vc nao usa o suporte a Splash que a versão 6 oferece?

marciofermino

parece que li algo a respeito … vc passa uma parametro para o java e ele le esta imagem é isso mesmo ?

vc tem a sintaxe?

marciofermino

Agora mesmo assim seria legal rodar meu código splash

mchiareli

É isso mesmo, você pode chamar o java com o seguinte comando:

Ou você pode colocar a seguinte propriedade no arquivo manifest.mf

Você pode recuperar a imagem depois e desenhar algo sobre ela com java 2d, como uma barra de progresso por exemplo, você pode ver um exemplo disso aqui:

https://aptframework.dev.java.net/gooey/splashScreen.html

marciofermino

ta se eu usar o manifest
onde devo colocar minha imagem.jpg?

marciofermino

gostei do exemplo…

onde coloco minha imagem?

mchiareli

marciofermino:
ta se eu usar o manifest
onde devo colocar minha imagem.jpg?

eu deixo a imagem dentro do jar…

tipo:

Só cuidado com o tamanho da imagem, para não aumentar muito o tamanho do seu jar…

marciofermino

entao eu coloquei a imagem juntamente com minhas classes
mais não funcionou.

Criado 21 de agosto de 2008
Ultima resposta 22 de ago. de 2008
Respostas 10
Participantes 2