web-dev-qa-db-fra.com

Créer une belle "chargement ..." animation

Dupliquer possible:
[.____] assez alternative à JPROGRESSBAR?

J'ai un processus qui prend plusieurs secondes à charger et je souhaite créer une animation dans Java Swing jusqu'à ce qu'il termine le chargement.

J'aimerais éviter d'utiliser une barre de progression typique et d'utiliser un bon progrès infini moderne comme celui-ci

infinite progress

Je suis au courant de questions similaires, mais c'est strictement Java Swing lié. Y a-t-il une bibliothèque ou un exemple pour cela?

15
Roman Rdgz

Je recommanderais d'utiliser la vitrine pour ce type d'activité. Les étapes concernées sont:

  • Créez un JComponent avec BorderLayout. Ajouter un JLabel au CENTER qui inclut l'icône d'animation .gif de votre choix.
  • (Facultatif) Remplacez la méthode Paint(Graphics) pour que votre interface graphique soit grisée (ou blanchi). Pour atteindre cet objectif, vous devez dessiner un rectangle rempli de la taille du composant, remplissant le rectangle avec une couleur semi-transparente.
  • Ajoutez le composant comme la vitrine de la trame racine de votre application.
9
Adamski

Il suffit d'utiliser A ImageIcon pour cette tâche, Il anime automatiquement les gifs . Le code ci-dessous produit cette capture d'écran ( le ajax-loader.gif a été téléchargé à partir de http://www.ajaxload.info/):

screenshot

Code:

public static void main(String[] args) throws Exception {
    JFrame frame = new JFrame("Test");

    ImageIcon loading = new ImageIcon("ajax-loader.gif");
    frame.add(new JLabel("loading... ", loading, JLabel.CENTER));

    frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    frame.setSize(400, 300);
    frame.setVisible(true);
}
39
dacwe

Bien sûr que c'est possible. Vous pouvez utiliser l'outil Ajaxload pour générer une image animée, qui peut être utilisée dans n'importe quel conteneur image/HTML.

3
Johan Sjöberg