[RESOLVIDO]Problema com splash

5 respostas
R

Boa tarde pessoas!

To tendo um problema com splash… O Netbeans carrega um “quadrado branco” mas a imagem que armazenei não carrega. E ele não está carregando o Entrar.java depois. Ou seja, O quadrado branco some depois de um tempo, mas o Entrar.java não é exibido.

https://lh3.googleusercontent.com/-7IRsLB7QgnM/UMnzkSv0dAI/AAAAAAAAAWQ/lQmJl7IGuKw/s800/quadrado.jpg

/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

package sfashion;

import fronteira.Entrar;
import java.awt.*;
import javax.swing.*;

public class SplashScreen extends JWindow {

    private int duration;

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

// Este é um método simples para mostrar uma tela de apresentção

// no centro da tela durante a quantidade de tempo passada no construtor

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

        // Configura a posição e o tamanho da janela
        int width = 808;
        int height =485;
        Dimension screen = Toolkit.getDefaultToolkit().getScreenSize();
        int x = (screen.width-width)/2;
        int y = (screen.height-height)/2;
        setBounds(x,y,width,height);

        // Constrói o splash screen
        JLabel label = new JLabel(new ImageIcon("sfashion/src/imagens/splash.png"));
   

        Color oraRed = new Color(156, 20, 20,  255);
        content.setBorder(BorderFactory.createLineBorder(oraRed, 10));
        // Torna visível
        setVisible(true);

        // Espera ate que os recursos estejam carregados
        try { Thread.sleep(duration); } catch (Exception e) {}
        setVisible(false);
    }

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

    public static void main(String[] args) {
        // Mostra uma imagem com o título da aplicação
        SplashScreen splash = new SplashScreen(10000);
        splash.showSplashAndExit();
        Entrar e = new Entrar();
        e.setVisible(true);

5 Respostas

malucocelo

Se você usar o “System.exit(0)” o aplicativo fecha.
Use “System.exit(1)” ou um “dispose()”.

Quanto a imagem, deve ser problema de path, continua tentando com outras combinações de pasta. Para testar você pode passar o caminho absoluto e depois e tentando com o relativo.

ViniGodoy

Splashscreen é um recurso automático a partir do Java 6. Você não precisa de nenhuma linha de código para isso:

R

ViniGodoy
Eu sei disso, mas não funcionou cmg. E depois vou fazer exe do jar, e usando o manifest o splash desaparece.

malucocelo,
o dispose(); deu certo, obrigado… Mas a imagem ainda assim não quer aparecer
To tentando de varias maneiras, mas nada.

Olha o código:

/*
* To change this template, choose Tools | Templates
* and open the template in the editor.
*/

package sfashion;

import fronteira.Entrar;
import java.awt.*;
import javax.swing.*;

public class SplashScreen extends JWindow {

    private int duration;

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

// Este é um método simples para mostrar uma tela de apresentção

// no centro da tela durante a quantidade de tempo passada no construtor

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

        // Configura a posição e o tamanho da janela
        int width = 808;
        int height =485;
        Dimension screen = Toolkit.getDefaultToolkit().getScreenSize();
        int x = (screen.width-width)/2;
        int y = (screen.height-height)/2;
        setBounds(x,y,width,height);

        // Constrói o splash screen
        ImageIcon icon = new ImageIcon("sfashion/src/Imagens/splash.png");
        setIconImage(icon.getImage());


        Color oraRed = new Color(156, 20, 20,  255);
        content.setBorder(BorderFactory.createLineBorder(oraRed, 10));
        // Torna visível
        setVisible(true);

        // Espera ate que os recursos estejam carregados
        try { Thread.sleep(duration); } catch (Exception e) {}
        setVisible(false);
    }

    public void showSplashAndExit() {
        showSplash();
        dispose();
    }

    public static void main(String[] args) {
        // Mostra uma imagem com o título da aplicação
        SplashScreen splash = new SplashScreen(2000);
        splash.showSplashAndExit();
        Entrar e = new Entrar();
        e.setVisible(true);
    }
}

Acabei de descobrir, ele não está procurando a imagem. Qualquer coisa que eu coloque na url acontece isso, mesmo se eu digitar HSAHSAHSAHRAUERUTYKIYF. (deveria pelo menos dar erro, né? ‘-’)

R

Já consegui
Fiz de um jeito bem mais fácil

Eu criei um JFrame, coloquei a imagem como plano de fundo…
apliquei setUndecorated(false)…
e modifiquei o main, assim:

public static void main(String[] args) throws InterruptedException  {
        // TODO code application logic here
        Splash s = new Splash();
        s.setResizable(false);
        s.setLocationRelativeTo(null);
        s.setVisible(true);
         Thread.sleep(2000);
         s.setVisible(false);
         Entrar e = new Entrar();
         e.setLocationRelativeTo(null);
         e.setResizable(false);
         e.setVisible(true);

Pode ser gambiarra, mas convenhamos que é muito mais simples do que fazer uma classe Splash. :slight_smile:

ViniGodoy

E bem mais complicado do que do jeito certo.

Criado 13 de dezembro de 2012
Ultima resposta 13 de dez. de 2012
Respostas 5
Participantes 3