Splash Screen com JProgressBar (Exemplo Funcional)

Oi, Galera.

Ontem fiquei um bom tempo procurando algum exemplo para criar um Splash Screen que trabalhasse com um JProgressBar. Como não achei nada que resolvesse meu problema, resolvi construir um no braço. Estou disponibilizando o código totalmente funcional para ajudar aqueles que passarem pelo mesmo problema. Ah, neste exemplo o JProgressBar está setado para andar de um lado para outro até que você feche o splash (isto é carregue sua aplicação) [jProgressBarSistema.setIndeterminate(true)].

É possível fazer algo onde a barra de status do JProgressBar trabalhe como no Netbeans (no meu sistema eu fiz isto). A idéia é a mesma descrito neste código. Qualquer dúvida me perguntem…

Espero ter ajudado,

Ricardo.

cara, vc tem um exemplo que faça da maneira do netBeans? ou seja, em forma de preenchimento.
Se tiver um exemplo poe pra baixar :wink:

valew… ah e esse exemplo ficou muito bom! Parabéns

VALEU!!!

depois de mais de 1 semana procurando, foi o primeiro programa que rodou!!!

VALEU!!!

funciona legal … vou implementar aqui
muito bom !!!
valeu :smiley:

No Netbeans eu tive que colocar desta forma
ImageIcon imageIcon = new javax.swing.ImageIcon(getClass().getResource("/CDAnimado.gif"));

ficou show de bola

Muito legal!!

como acessar minha classe principal? onde adiciono o código para buscar minha classe main?

Olá sou novo aqui no forum mas estou com um problema com um jProgressBar no netbeans nao consigo mostrar o prenchimento dele como exemplo de 1 a 100 ele carregando .

sugiro eclipse…

Sim sei fazr uso dele tbm mas o problemo é da ação no jProgressBar tem alguma solução ?

vc tinha q postar o código pra gente ajudar né

mas veja como está o seu com relação a um tradicional

import java.awt.BorderLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JProgressBar;

public class JProgressBarSetValue extends JFrame {
  JProgressBar bar = new JProgressBar();
  JButton step = new JButton("Step");

  public JProgressBarSetValue() {
    setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    step.addActionListener(new ActionListener() {
      public void actionPerformed(ActionEvent e) {
        int value = bar.getValue() + 7;
        if (value > bar.getMaximum()) {
          value = bar.getMaximum();
        }
        bar.setValue(value);
      }
    });

    getContentPane().add(bar, BorderLayout.NORTH);
    getContentPane().add(step, BorderLayout.EAST);
    pack();
    setVisible(true);
  }

  public static void main(String arg[]) {
    new JProgressBarSetValue();
  }
}

eu tenho um em casa, funcionando de 0 a 100%, com uma imagem no fundo, texto no progressbar e etc…qdo eu chegar do trabalho posto aqui pra vc…

Por favor nojs dê essa honra. se quizer me enviar no email thiago.analista@ymail.com

Este ai é o código mas para dar funcionamento na barra eu não sei por onde começar

package br.com.harpia.forms;

import javax.swing.SwingUtilities;
import java.awt.BorderLayout;
import javax.swing.JPanel;
import javax.swing.JFrame;
import java.awt.Dimension;
import javax.swing.JProgressBar;
import java.awt.Rectangle;

public class Barra_de_Progresso extends JFrame {

	private static final long serialVersionUID = 1L;
	private JPanel jContentPane = null;
	private JProgressBar Barra_Progresso = null;

	/**
	 * This method initializes Barra_Progresso	
	 * 	
	 * @return javax.swing.JProgressBar	
	 */
	private JProgressBar getBarra_Progresso() {
		if (Barra_Progresso == null) {
			Barra_Progresso = new JProgressBar();
			Barra_Progresso.setBounds(new Rectangle(0, 249, 402, 19));
		}
		return Barra_Progresso;
	}

	/**
	 * @param args
	 */
	public static void main(String[] args) {
		// TODO Auto-generated method stub
		SwingUtilities.invokeLater(new Runnable() {
			public void run() {
				Barra_de_Progresso thisClass = new Barra_de_Progresso();
				thisClass.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
				thisClass.setVisible(true);
			}
		});
	}

	/**
	 * This is the default constructor
	 */
	public Barra_de_Progresso() {
		super();
		initialize();
	}

	/**
	 * This method initializes this
	 * 
	 * @return void
	 */
	private void initialize() {
		this.setSize(409, 299);
		this.setContentPane(getJContentPane());
		this.setTitle("JFrame");
	}

	/**
	 * This method initializes jContentPane
	 * 
	 * @return javax.swing.JPanel
	 */
	private JPanel getJContentPane() {
		if (jContentPane == null) {
			jContentPane = new JPanel();
			jContentPane.setLayout(null);
			jContentPane.add(getBarra_Progresso(), null);
		}
		return jContentPane;
	}

}  //  @jve:decl-index=0:visual-constraint="10,10"

Sim este seu código ai você deu um evento ActionPerfomad, mas e se eu quiser fazer para ele iniciar sem eu usar um Jbutton ?

Aqui vai o código:

package Adicional;

import java.awt.Color;
import java.awt.Dimension;
import java.awt.Toolkit;
import javax.swing.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

public class Splash extends javax.swing.JWindow
{
    private JLabel lblImagem;
    private JLabel textoCarregando;
    private static JLabel textoDinamico;
    private static JProgressBar progressBar;
    public static Principal.frmMenu menu=new Principal.frmMenu();

    public Splash()
    {
        addComponenets();
    }

    private void addComponenets()
    {
        /**
         * Inicializando as variavaeis utilizadas
         */
        progressBar = new JProgressBar();
        lblImagem = new JLabel();
        textoCarregando = new JLabel();
        textoDinamico = new JLabel();
        /**
         * Carregando a imagem do Splash e adicionando a imagem ao componente
         * jLabelSplashImage
         */
        ImageIcon imageIcon = new javax.swing.ImageIcon("imgs/Duff.jpg");
        lblImagem.setIcon(imageIcon);
        /**
         * Definindo dinamicamente o tamando do container segundo o tamanho da imagem.
         */
        this.setMinimumSize(new java.awt.Dimension(imageIcon.getIconWidth(),imageIcon.getIconHeight()));
        lblImagem.setBounds(0, 0, imageIcon.getIconWidth(), imageIcon.getIconHeight());
        /**
         * A definicao do layout=null e importante para possibilitar que os componentes
         * fiquem sobrescritros em tempo de execucao
         */
        getContentPane().setLayout(null);
        /**
         * Definindo a localizacao do splash no centro da tela
         */
        Dimension screen = Toolkit.getDefaultToolkit().getScreenSize();
        this.setLocation((screen.width - this.getSize().width) / 2, (screen.height - this.getSize().height) / 2);

        /**
         * Setando parametros da variavel jProgressBarSistema
         */
        progressBar.setForeground(Color.GREEN);
        progressBar.setPreferredSize(new java.awt.Dimension(148, 5));
        progressBar.setBounds(50, 400, 500, 12);
        progressBar.setBorderPainted(false);
        progressBar.setIndeterminate(true);
        /**
         * Adicionando o jProgressBarSistema a classe SplashJProgressBar
         */
        getContentPane().add(progressBar);

        /**
         * Setando parametros da variavel jProgressBarSistema
         */
        textoCarregando.setForeground(Color.BLUE);
        textoCarregando.setFont(new java.awt.Font("DialogInput", 0, 12));
        textoCarregando.setText("Carregando...");
        textoCarregando.setBounds(50, 400, 100, 20);
        /**
         * Adicionando o jProgressBarSistema a classe SplashJProgressBar
         */
        this.getContentPane().add(textoCarregando);

        /**
         * Setando parametros da variavel jProgressBarSistema
         */
        textoDinamico.setForeground(Color.BLUE);
        textoDinamico.setFont(new java.awt.Font("DialogInput", 0, 12));
        textoDinamico.setBounds(360, 285, 230, 20);
        /**
         * Adicionando o jProgressBarSistema a classe SplashJProgressBar
         */
        this.getContentPane().add(textoDinamico);

        /**
         * O Ultimo item adicionado no conteiner deve ser o componente que comtem
         * a imagem do Splah
         */
        this.getContentPane().add(lblImagem);
        this.pack();

    }

    public static void main(String args[])
    {
        final Splash splash=new Splash();

        final javax.swing.JProgressBar probar = new javax.swing.JProgressBar();
        probar.setString("0%");
        probar.setStringPainted(true);
        Timer timer=new Timer(100, new ActionListener()
        {
            public void actionPerformed(ActionEvent arg0)
            {
                probar.setMinimum(0);
                probar.setMaximum(100);
                probar.setValue(probar.getValue()+1);
                textoDinamico.setText("Inicializando Dobba "+String.valueOf(probar.getValue())+"%");
                if(probar.getValue()==100)
                {
                    splash.dispose();
                    menu.setVisible(true);
                }
            }

        });
        splash.add(probar);
        splash.setVisible(true);
        timer.start();
    }
}

Guilherme eu peguei seu código e mudei a classe menuPrincipal sua e criei um objeto de minha classe principal mas nao aparece a barra de progresso so que depois que passa o tempo determinado abre a classe principal so só fecha ela encerrando o processo no eclipse oque poderia ser ?

package forms;
  

import java.awt.Color;   
import java.awt.Dimension;   
import java.awt.Toolkit;   
import javax.swing.*;   
import java.awt.event.ActionEvent;   
import java.awt.event.ActionListener;   
  
public class Barra_ extends javax.swing.JWindow   
{   
    private JLabel lblImagem;   
    private JLabel textoCarregando;   
    private static JLabel textoDinamico;   
    private static JProgressBar progressBar;   
    public static forms.Principal menu=new forms.Principal();   
  
    public Barra_()   
    {   
        addComponenets();   
    }   
  
    private void addComponenets()   
    {   
        /**  
         * Inicializando as variavaeis utilizadas  
         */   
        progressBar = new JProgressBar();   
        lblImagem = new JLabel();   
        textoCarregando = new JLabel();   
        textoDinamico = new JLabel();   
        /**  
         * Carregando a imagem do Splash e adicionando a imagem ao componente  
         * jLabelSplashImage  
         */   
        ImageIcon imageIcon = new javax.swing.ImageIcon("forms/imagemSplash.png");   
        lblImagem.setIcon(imageIcon);   
        /**  
         * Definindo dinamicamente o tamando do container segundo o tamanho da imagem.  
         */   
        this.setMinimumSize(new java.awt.Dimension(imageIcon.getIconWidth(),imageIcon.getIconHeight()));   
        lblImagem.setBounds(0, 0, imageIcon.getIconWidth(), imageIcon.getIconHeight());   
        /**  
         * A definicao do layout=null e importante para possibilitar que os componentes  
         * fiquem sobrescritros em tempo de execucao  
         */   
        getContentPane().setLayout(null);   
        /**  
         * Definindo a localizacao do splash no centro da tela  
         */   
        Dimension screen = Toolkit.getDefaultToolkit().getScreenSize();   
        this.setLocation((screen.width - this.getSize().width) / 2, (screen.height - this.getSize().height) / 2);   
  
        /**  
         * Setando parametros da variavel jProgressBarSistema  
         */   
        progressBar.setForeground(Color.GREEN);   
        progressBar.setPreferredSize(new java.awt.Dimension(148, 5));   
        progressBar.setBounds(50, 400, 500, 12);   
        progressBar.setBorderPainted(false);   
        progressBar.setIndeterminate(true);   
        /**  
         * Adicionando o jProgressBarSistema a classe SplashJProgressBar  
         */   
        getContentPane().add(progressBar);   
  
        /**  
         * Setando parametros da variavel jProgressBarSistema  
         */   
        textoCarregando.setForeground(Color.BLUE);   
        textoCarregando.setFont(new java.awt.Font("DialogInput", 0, 12));   
        textoCarregando.setText("Carregando...");   
        textoCarregando.setBounds(50, 400, 100, 20);   
        /**  
         * Adicionando o jProgressBarSistema a classe SplashJProgressBar  
         */   
        this.getContentPane().add(textoCarregando);   
  
        /**  
         * Setando parametros da variavel jProgressBarSistema  
         */   
        textoDinamico.setForeground(Color.BLUE);   
        textoDinamico.setFont(new java.awt.Font("DialogInput", 0, 12));   
        textoDinamico.setBounds(360, 285, 230, 20);   
        /**  
         * Adicionando o jProgressBarSistema a classe SplashJProgressBar  
         */   
        this.getContentPane().add(textoDinamico);   
  
        /**  
         * O Ultimo item adicionado no conteiner deve ser o componente que comtem  
         * a imagem do Splah  
         */   
        this.getContentPane().add(lblImagem);   
        this.pack();   
  
    }   
  
    public static void main(String args[])   
    {   
        final Barra_ splash=new Barra_();   
  
        final javax.swing.JProgressBar probar = new javax.swing.JProgressBar();   
        probar.setString("0%");   
        probar.setStringPainted(true);   
        Timer timer=new Timer(100, new ActionListener()   
        {   
            public void actionPerformed(ActionEvent arg0)   
            {   
                probar.setMinimum(0);   
                probar.setMaximum(100);   
                probar.setValue(probar.getValue()+1);   
                textoDinamico.setText("Inicializando Dobba "+String.valueOf(probar.getValue())+"%");   
                if(probar.getValue()==100)   
                {   
                    splash.dispose();   
                    menu.setVisible(true);   
                }   
            }   
  
        });   
        splash.add(probar);   
        splash.setVisible(true);   
        timer.start();   
    }   
}  

onde fica essa pasta forms que tem sua imagemSplash ?

Dentro do meu projeto src/forms é onde fica todas minhas classes formularios seja InternalJFrame ou somente JFrame

Guilherme tinha colocado errado a url da imagem mas mudei tirei o pacote forms e deixei so o nome da imagem mas ainda nada está do mesmo jeito se poder me mostrar onde ta o erro no código , obrigado …

Então Resplandes. vc percebeu que os Components estão setados via setBounds? se a imagem que vc pôs, não aceita as dimnesões setadas no setBounds() então não ira aparecer nada, pois o código sera redirecionado para um catch(exceção)…portante, verifique o setBounds e coloque uma dimensão que se encaixe no tamanho da sua imagem