Tela de Splash

1 resposta
mathalves

Olá pessoal...

Minha ProgressBar carrega bem rápido, e quando carrega, fica em cima da TelaPrincipal, gostaria de achar uma solução !

Obrigado,até mais...

package br.com.biblio;

import java.awt.BorderLayout;
import java.awt.EventQueue;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.border.EmptyBorder;
import java.awt.Window.Type;
import java.awt.Color;
import javax.swing.JLabel;
import java.awt.Font;
import javax.swing.GroupLayout;
import javax.swing.GroupLayout.Alignment;
import javax.swing.JWindow;
import javax.swing.SwingConstants;
import javax.swing.JProgressBar;
import javax.swing.ImageIcon;
import javax.swing.JTextField;

public class TelaSplash extends JFrame {

	private JPanel contentPane;

	public static void main(String[] args) {
		EventQueue.invokeLater(new Runnable() {
			public void run() {
				try {
					TelaSplash frame = new TelaSplash();
					frame.setVisible(true);
				} catch (Exception e) {
					e.printStackTrace();
				}
			}
		});
	}

	public TelaSplash() {
		// Desabilitar a Barra
		setUndecorated(true);
		setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
		setBounds(100, 100, 450, 300);
		// Centralizar o JFrame
		setLocationRelativeTo(null);
		contentPane = new JPanel();
		contentPane.setBackground(new Color(255, 69, 0));
		contentPane.setBorder(new EmptyBorder(5, 5, 5, 5));
		setContentPane(contentPane);
		contentPane.setLayout(null);
		
		JLabel JLabel1 = new JLabel("BiblioOnBase");
		JLabel1.setHorizontalAlignment(SwingConstants.RIGHT);
		JLabel1.setForeground(new Color(255, 255, 255));
		JLabel1.setBackground(new Color(255, 255, 255));
		JLabel1.setFont(new Font("Comic Sans MS", Font.BOLD, 48));
		JLabel1.setBounds(10, 11, 430, 278);
		contentPane.add(JLabel1);
		
		JProgressBar JProgressBar1 = new JProgressBar();
		JProgressBar1.setBounds(10, 275, 430, 14);
		contentPane.add(JProgressBar1);
		
		JLabel JLabel2 = new JLabel("");
		JLabel2.setIcon(new ImageIcon(TelaSplash.class.getResource("/br/com/biblio/Logo.png")));
		JLabel2.setBounds(10, 45, 128, 128);
		contentPane.add(JLabel2);
		
		JLabel JLabel3 = new JLabel("Carregando");
		JLabel3.setForeground(new Color(255, 255, 255));
		JLabel3.setFont(new Font("Comic Sans MS", Font.BOLD, 24));
		JLabel3.setHorizontalAlignment(SwingConstants.CENTER);
		JLabel3.setBounds(10, 184, 430, 80);
		contentPane.add(JLabel3);
		
		JLabel JLabel4 = new JLabel("100 %");
		JLabel4.setHorizontalAlignment(SwingConstants.CENTER);
		JLabel4.setForeground(new Color(255, 255, 255));
		JLabel4.setFont(new Font("Comic Sans MS", Font.BOLD, 12));
		JLabel4.setBounds(10, 250, 430, 14);
		contentPane.add(JLabel4);
		
		//Utilizando a ProgressBar
		
		for (int i = 0; JProgressBar1.getValue() != 100; i++) {
			JProgressBar1.setValue(i);
			JLabel4.setText(JProgressBar1.getValue() + "%");
		}
		
		if (JProgressBar1.getValue() == 100) {
			dispose();
			new TelaPrincipal().setVisible(true);
		}
	}
}

1 Resposta

ViniGodoy

Por favor, ao postar tópicos, não marque-os com coisas óbvias como [DÚVIDA], [AJUDA], [SOCORRO] ou [URGENTE].

Se você não tivesse dúvida, nem teria aberto ao tópico.

Quanto ao seu problema. Não se preocupe, haverá uma tela de splash em máquinas lentas.
Em máquinas rápidas, não tem mesmo porque punir seu usuário.

Agora, melhor que fazer uma tela de splash própria é usar a opção de splash a partir do java 6. Isso mostra a tela antes mesmo da VM carregar (além de não exigir código nenhum):
http://java.sun.com/developer/technicalArticles/J2SE/Desktop/javase6/splashscreen/

Criado 16 de junho de 2012
Ultima resposta 16 de jun. de 2012
Respostas 1
Participantes 2