Splash Screen

Assunto: Como criar uma splash screen, sem que esta tela atrapalhe no tempo de inicialização da sua aplicação java.

Você pode ler este tutorial na íntegra http://www.guj.com.br/java.artigo.25.1.guj
Por favor, coloque as suas dúvidas e seus comentários sobre este tutorial aqui.
Sinta-se livre para fazer qualquer tipo de pergunta, desta maneira você estará nos ajudando e aos outros usuários!

  1. Como utilizar este Exemplo de Splash em um servlet ??

este exemplo de splash é para aplicações desktop e não para aplicações WEB :slight_smile:

Mas conhece ou existe algum exemplo deste para web ?? :?

:smiley: :smiley:

Rafa, aplicacoes web sao mto diferentes de aplicacoes desktop. Em desktop, um splash screen eh util qdo a apliacao demora para carregar, assim o usuario nao pensa que o sistema travou, por exemplo. Logicamente que tmb deixa o visual mais bonito e com uma aparencia mais profissional, mas fazer isso na web nao tem sentido, ja que o “splash” so apareceria qdo tudo fosse descarregado do servidor.

Voce pode fazer algo com dhtml… por exemplo, ao clicar no botao “Login”, voce mostra um dhtml como se fosse um splash, mas isso nao faria mto diferenca, ja que desaparecedia logo…

falow
Rafael

Ola,

Estou usando este tutorial como base para uma classe Splash Screen genérica, então não vou poder usar o getInstance() pois eu quero que haja mais de uma instancia da classe e sejam independentes (imagens, textos, tudo).

Meu problema é a classe Window não tem o construtor default … e eu não estou conseguindo estende-la pois o Java exige uma chamada ao construtor mas o seguinte código
public SplashScreen() {
super((Window) getOwner());
}

Me da a mensagem “Cannot refer to an instance method while explicitly invoking a constructor”

Como fazer?

Obrigado

enfim criei um splashScreen que inicia em paralelo ao sistema, e mostra os dados carregando e com barra progress que passa enquanto os dados sao lidos

SplashScreen.java


import db.ConnEmprestimos;
import db.Emprestimos;
import java.awt.Dimension;
import java.util.ArrayList;
import java.util.logging.Level;
import java.util.logging.Logger;
import javax.swing.ImageIcon;
import javax.swing.JLabel;
import javax.swing.JProgressBar;
import javax.swing.JWindow;
import org.netbeans.lib.awtextra.AbsoluteConstraints;
import org.netbeans.lib.awtextra.AbsoluteLayout;

/**
 *
 * @author vielmond
 */
public class SplashScreen extends JWindow implements Runnable{
    AbsoluteLayout Absoluto;
    AbsoluteConstraints absimage,AbsBarra,AbsLabel2,AbsLabel3,AbsLabel4,AbsLabel5,AbsLabel6;
    ImageIcon image;
    JLabel jlabel,jlabel2,jlabel3,jlabel4,jlabel5,jlabel6;
    JProgressBar barra;
    private int value;
 
    public SplashScreen(){
        Absoluto = new AbsoluteLayout();
        absimage = new AbsoluteConstraints(0, 0);
        AbsBarra = new AbsoluteConstraints(14,3);
        AbsLabel2 = new AbsoluteConstraints(600,3);
        AbsLabel3 = new AbsoluteConstraints(405,350);
        AbsLabel4 = new AbsoluteConstraints(14,20);
        AbsLabel5 = new AbsoluteConstraints(14,40);
        AbsLabel6 = new AbsoluteConstraints(14,60);
        //cria objetos
        jlabel = new JLabel();
        jlabel2 = new JLabel();
        jlabel3 = new JLabel();
        jlabel4 = new JLabel();
        jlabel5 = new JLabel();
        jlabel6 = new JLabel();
        barra = new JProgressBar();
        
        
        barra.setPreferredSize(new Dimension(400,15));
        this.getContentPane().setLayout(Absoluto);
        this.getContentPane().add(barra,AbsBarra);
        jlabel3.setText("Desenvolvido por: Vielmond Informática");
        this.getContentPane().add(jlabel2,AbsLabel2); 
        this.getContentPane().add(jlabel3,AbsLabel3);
        this.getContentPane().add(jlabel4,AbsLabel4);
        this.getContentPane().add(jlabel5,AbsLabel5);
        this.getContentPane().add(jlabel6,AbsLabel6);
        //mostra a imagem
        image = new ImageIcon(this.getClass().getResource("logo.png"));
        jlabel.setIcon(image);
        this.getContentPane().add(jlabel,absimage);              

    }
    
    @Override
    public void run(){

        this.pack();
        this.setVisible(true);
        this.setLocationRelativeTo(null);
        
        ConnEmprestimos u = new ConnEmprestimos(null);
        ArrayList<Emprestimos> user = u.Busca();
        
        //connEmprestimos count
        ArrayList<Emprestimos> count = u.Verifica2();
        for(Emprestimos Count : count){
            value = Count.getCount();
        }

        float x = 0; float z = (float) 100/value;
        for(Emprestimos s : user){
            x++;

            barra.setValue((int) (z*x));
            jlabel2.setText((int) (z*x)+"%");
            
            jlabel4.setText("\n Carregando Usuarios: "+s.getNomeUsuario());
            jlabel5.setText("\n Carregando Livros: "+s.getNomeLivro());
            jlabel6.setText("\n Carregando código de barras: "+s.getCodBarras());

            try{
                Thread.sleep(100);
            } catch (InterruptedException ex){
                Logger.getLogger(SplashScreen.class.getName()).log(Level.SEVERE, null, ex);
            }
            value--;
        }

        //fecha esse splash
        SplashScreen.this.dispose();

    }
}

Classe AbreSistema.java - aki chama a thread de splash e a thread JPrincipal


import java.net.ServerSocket;
import javax.swing.JOptionPane;

/**
 *
 * @author vielmond
 */
public class ClasseAbreSistema {
    private static ServerSocket s;
    
    public static void main(String[] args){
        try {
            s = new ServerSocket(9581);
        } catch (Exception e) {
            JOptionPane.showMessageDialog(null, "Desculpe, mas só uma aplicação pode ser executada por vez.");
            System.exit(0);
        }
        
        SplashScreen splash = new SplashScreen();
        ChamaSistema chamasistema = new ChamaSistema();
        
        Thread splashscreen = new Thread(splash);
        Thread chamaSistema = new Thread(chamasistema);
        
        //inicia a thread de sistema        
        chamaSistema.setPriority(Thread.MAX_PRIORITY);
        chamaSistema.start();

        
        
        //inicia a thread de splash
        splashscreen.start();
        
    }
}

ta funcionando blz… disponivel para quem quiser…

mas preciso saber como faço para mudar a cor de uma linha unica em um jtable conforme a data de uma celula dessa linha for anterior a atual? por favor preciso com urgencia!!!

obrigado

wagner

Cara ressuscitar um tópico de 2003 e fogo heim… depois do tópico estar adormecido por 10 longos anos… vai um cidadão acordalo…