Splash screen avec jprogressbar

Contenu du snippet

Comme je n ai trouvé aucun SplashScreen avec une JProgressBar pour indiquer l'état de l avancement j'ai décidé de poster le mien .
Il peut largement etre amélioré avec , par exemple un mediatracker sur le panel pour couvrir le panel de l'image .
On verra ca plus tard :p

Pour l'utiliser il faut détérminer la vitesse dans la methode run();
Puis caster

Splash splash =
new Splash(String pathImage , String messageToDisplay , String pathIconeFrame);

Et voila :)

Source / Exemple :


/*
 *

  • @Author Adrien PARENTY
*
  • /
import java.awt.event.*; import java.awt.*; import javax.swing.*; public class Splash { JProgressBar progress; Thread thread; public static JFrame frame; public static void main(String[] args){ new Splash("Logo.gif","E.A.S.\u03A8 Version 1.0 Chargement...","icone.gif");//Path de l'image qu'on veut ,message,ainsi que l icone de la fenetre } public Splash(String imgPath, String message,String icone) { frame = new JFrame("Chargement"); frame.setIconImage( Toolkit.getDefaultToolkit().getImage(icone));//icone de la Jframe JPanel panel = new JPanel(); panel.setBackground( new Color(124,125,235));//Couleur de fond du Panel panel.setSize(450,250); panel.setBounds(0,0,450,250); JLabel texte = new JLabel(message);//Texte de la String texte.setForeground(Color.ORANGE); JLabel img = new JLabel(); img.setIcon( new ImageIcon(imgPath)); progress = new JProgressBar(0, 100); panel.setBorder( BorderFactory.createLineBorder(Color.BLACK)); progress.setStringPainted(true); //ajout des éléments panel.add("North",img); panel.add("North",texte); panel.add("East",progress); frame.getContentPane().add(BorderLayout.CENTER, panel); frame.setSize(450,250); //Pour définir le Splash au milieu de l'écran' Dimension screen = Toolkit.getDefaultToolkit().getScreenSize(); frame.setLocation((screen.width - frame.getSize().width)/2,(screen.height - frame.getSize().height)/2); // pour que ca ai vraiement l air d un splash :p frame.setUndecorated(true); frame.setVisible(true); frame.setResizable(false); //Retaillage de la barre pour qu elle corresponde a la taille de la frame progress.setBounds(new Rectangle(10,220,430,20)); // Création de thread pour afficher la progression de la barre thread = new Thread( new Progression()); thread.start(); //On peut ajouter un Thread d'une classe de traitement qui implemente un Runnable //et les switcher. } public class Progression implements Runnable { public void run() { for (int j = 1; j < 100; j++) { progress.setValue(j); progress.setString(j+" %"); try { thread.sleep(40);//determination de la rapiditée de la frame } catch(Exception e) { e.printStackTrace(); frame.dispose();//en cas d' erreur pour pas rester bloqué sur le splash } } frame.dispose(); //fermeture de la frame lorsque le chargement est teminé } } }

A voir également

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.