Splash Screen com JProgressBar (Exemplo Funcional)
24 respostas
R
rmenezzes
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…
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
valew… ah e esse exemplo ficou muito bom! Parabéns
M
Marcus_Freitas
VALEU!!!
depois de mais de 1 semana procurando, foi o primeiro programa que rodou!!!
VALEU!!!
L
Lindberg
funciona legal … vou implementar aqui
muito bom !!!
valeu
S
souzabolivar
No Netbeans eu tive que colocar desta forma
ImageIcon imageIcon = new javax.swing.ImageIcon(getClass().getResource("/CDAnimado.gif"));
ficou show de bola
Muito legal!!
T
THIAGOANALISTA
como acessar minha classe principal? onde adiciono o código para buscar minha classe main?
R
Resplandes
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 .
R
redr4gon
sugiro eclipse…
R
Resplandes
Sim sei fazr uso dele tbm mas o problemo é da ação no jProgressBar tem alguma solução ?
R
redr4gon
vc tinha q postar o código pra gente ajudar né
mas veja como está o seu com relação a um tradicional
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…
T
THIAGOANALISTA
Por favor nojs dê essa honra. se quizer me enviar no email [email removido]
R
Resplandes
Este ai é o código mas para dar funcionamento na barra eu não sei por onde começar
packagebr.com.harpia.forms;importjavax.swing.SwingUtilities;importjava.awt.BorderLayout;importjavax.swing.JPanel;importjavax.swing.JFrame;importjava.awt.Dimension;importjavax.swing.JProgressBar;importjava.awt.Rectangle;publicclassBarra_de_ProgressoextendsJFrame{privatestaticfinallongserialVersionUID=1L;privateJPaneljContentPane=null;privateJProgressBarBarra_Progresso=null;/** * This method initializes Barra_Progresso * * @return javax.swing.JProgressBar */privateJProgressBargetBarra_Progresso(){if(Barra_Progresso==null){Barra_Progresso=newJProgressBar();Barra_Progresso.setBounds(newRectangle(0,249,402,19));}returnBarra_Progresso;}/** * @param args */publicstaticvoidmain(String[]args){// TODO Auto-generated method stubSwingUtilities.invokeLater(newRunnable(){publicvoidrun(){Barra_de_ProgressothisClass=newBarra_de_Progresso();thisClass.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);thisClass.setVisible(true);}});}/** * This is the default constructor */publicBarra_de_Progresso(){super();initialize();}/** * This method initializes this * * @return void */privatevoidinitialize(){this.setSize(409,299);this.setContentPane(getJContentPane());this.setTitle("JFrame");}/** * This method initializes jContentPane * * @return javax.swing.JPanel */privateJPanelgetJContentPane(){if(jContentPane==null){jContentPane=newJPanel();jContentPane.setLayout(null);jContentPane.add(getBarra_Progresso(),null);}returnjContentPane;}}// @jve:decl-index=0:visual-constraint="10,10"
R
Resplandes
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 ?
G
guilherme.dio
Aqui vai o código:
packageAdicional;importjava.awt.Color;importjava.awt.Dimension;importjava.awt.Toolkit;importjavax.swing.*;importjava.awt.event.ActionEvent;importjava.awt.event.ActionListener;publicclassSplashextendsjavax.swing.JWindow{privateJLabellblImagem;privateJLabeltextoCarregando;privatestaticJLabeltextoDinamico;privatestaticJProgressBarprogressBar;publicstaticPrincipal.frmMenumenu=newPrincipal.frmMenu();publicSplash(){addComponenets();}privatevoidaddComponenets(){/** * Inicializando as variavaeis utilizadas */progressBar=newJProgressBar();lblImagem=newJLabel();textoCarregando=newJLabel();textoDinamico=newJLabel();/** * Carregando a imagem do Splash e adicionando a imagem ao componente * jLabelSplashImage */ImageIconimageIcon=newjavax.swing.ImageIcon("imgs/Duff.jpg");lblImagem.setIcon(imageIcon);/** * Definindo dinamicamente o tamando do container segundo o tamanho da imagem. */this.setMinimumSize(newjava.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 */Dimensionscreen=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(newjava.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(newjava.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(newjava.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();}publicstaticvoidmain(Stringargs[]){finalSplashsplash=newSplash();finaljavax.swing.JProgressBarprobar=newjavax.swing.JProgressBar();probar.setString("0%");probar.setStringPainted(true);Timertimer=newTimer(100,newActionListener(){publicvoidactionPerformed(ActionEventarg0){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();}}
R
Resplandes
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 ?
packageforms;importjava.awt.Color;importjava.awt.Dimension;importjava.awt.Toolkit;importjavax.swing.*;importjava.awt.event.ActionEvent;importjava.awt.event.ActionListener;publicclassBarra_extendsjavax.swing.JWindow{privateJLabellblImagem;privateJLabeltextoCarregando;privatestaticJLabeltextoDinamico;privatestaticJProgressBarprogressBar;publicstaticforms.Principalmenu=newforms.Principal();publicBarra_(){addComponenets();}privatevoidaddComponenets(){/** * Inicializando as variavaeis utilizadas */progressBar=newJProgressBar();lblImagem=newJLabel();textoCarregando=newJLabel();textoDinamico=newJLabel();/** * Carregando a imagem do Splash e adicionando a imagem ao componente * jLabelSplashImage */ImageIconimageIcon=newjavax.swing.ImageIcon("forms/imagemSplash.png");lblImagem.setIcon(imageIcon);/** * Definindo dinamicamente o tamando do container segundo o tamanho da imagem. */this.setMinimumSize(newjava.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 */Dimensionscreen=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(newjava.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(newjava.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(newjava.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();}publicstaticvoidmain(Stringargs[]){finalBarra_splash=newBarra_();finaljavax.swing.JProgressBarprobar=newjavax.swing.JProgressBar();probar.setString("0%");probar.setStringPainted(true);Timertimer=newTimer(100,newActionListener(){publicvoidactionPerformed(ActionEventarg0){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();}}
G
guilherme.dio
onde fica essa pasta forms que tem sua imagemSplash ?
R
Resplandes
Dentro do meu projeto src/forms é onde fica todas minhas classes formularios seja InternalJFrame ou somente JFrame
R
Resplandes
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 …
G
guilherme.dio
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
R
Resplandes
Guilherme e se eu quizer simplesmente dar ação a JprogressBar seria possivel ?
ela poderia esta em um simples JFrame que ja iría me ajudar rssr.
G
guilherme.dio
como assim dar ação?
R
Resplandes
Criar uma tread para que preencha conforme o tempo determinado a JprogressBar
G
guilherme.dio
Sim tem como, no guj tem alguns tópicos explicando