JprogressBar , barre chargement

Résolu
Signaler
Messages postés
113
Date d'inscription
mardi 9 avril 2002
Statut
Membre
Dernière intervention
12 août 2016
-
Messages postés
744
Date d'inscription
dimanche 1 avril 2007
Statut
Membre
Dernière intervention
9 mai 2010
-
Salut,
Désolé de reposter un message à ce sujet mais je n'ai pas trouvé comment editer mon autre message.
Je voudrais en fait sur mon applet qu'il s'affiche une barre de progression (JProgressBar) durant une opération que mon applet effectue. Mais je ne trouve pas comment faire car avec ce que j'ai essayé dans mon code ci dessous il m'affiche la barre de progression qu'à la fin si quelqu'un aurait une solution.

JFrame cadre = new JFrame("En cours de chargement");
        JPanel panneau = new JPanel();
        JLabel texte = new JLabel("Veuillez patienter pendant le chargement...");
        JProgressBar progress = new JProgressBar(0, 100);
        progress.setIndeterminate(true);
        panneau.add("Center", progress);
        panneau.add("Center", texte);
        cadre.getContentPane().add(BorderLayout.CENTER, panneau);
        cadre.setSize(800, 600);
        cadre.setVisible(true);
        cadre.setResizable(false);
        cadre.setFocusableWindowState(true);
        cadre.setFocusable(true);
        cadre.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
       
       
       
        try {

            System.out.println("SaveButton actionPerformed() L: " + largeurSV
                    + ", H: " + hauteurSV);
            Image image = monImage.getScaledInstance(largeurSV, hauteurSV,
                    BufferedImage.SCALE_SMOOTH);
            // Redimensionnement de l'image
            image.flush();
            // ecriture dans le fichier

            Date maintenant = new Date();
            SimpleDateFormat monFormat = new SimpleDateFormat(
                    "dd_MM_yyyy-kk_mm_ss");
            dateFormatee = monFormat.format(maintenant);

            monImage = new BufferedImage(largeurSV, hauteurSV,
                    BufferedImage.TYPE_INT_RGB);
            monImage.createGraphics().drawImage(image, 0, 0, null);
            // creation nouvelle image redimensionner
            monImage.flush();

            if (extension.equals(".bmp")) {
                fileWrite = new File("C:/startup/img_" + dateFormatee + ".bmp");
                ImageIO.write(monImage, "BMP", fileWrite);
                cheminImage = "C:\\startup\\img_" + dateFormatee + ".bmp";
            }
            if (extension.equals(".gif")) {
                fileWrite = new File("C:/startup/img_" + dateFormatee + ".gif");
                ImageIO.write(monImage, "GIF", fileWrite);
                cheminImage = "C:\\startup\\img_" + dateFormatee + ".gif";
            }
            if (extension.equals(".jpg")) {
                fileWrite = new File("C:/startup/img_" + dateFormatee + ".jpg");
                ImageIO.write(monImage, "JPEG", fileWrite);
                cheminImage = "C:\\startup\\img_" + dateFormatee + ".jpg";
            }
            if (extension.equals(".jpeg")) {
                fileWrite = new File("C:/startup/img_" + dateFormatee + ".jpg");
                ImageIO.write(monImage, "JPEG", fileWrite);
                cheminImage = "C:\\startup\\img_" + dateFormatee + ".jpg";
            }
            if (extension.equals(".png")) {
                fileWrite = new File("C:/startup/img_" + dateFormatee + ".png");
                ImageIO.write(monImage, "PNG", fileWrite);
                cheminImage = "C:\\startup\\img_" + dateFormatee + ".png";
            }

        } catch (Exception e1) { // Si erreur affichage de l'erreur
            System.out
                    .println("Exception methode actionPerformed() SaveButton.java catch : "
                            + e1);
        }

        /*-----------------------------------------------------------------------------------
         --------------------------------  Envoi vers FTP ------------------------------
         ------------------------------------------------------------------------------------*/

        FtpConnection ftpVariable;
        ftpVariable = new FtpConnection(false, 1);

        // CONNEXION
        try {
            ftpVariable.connect(serveurFTP);

        } catch (UnknownHostException eftp1) {

            System.out
                    .println("Erreur class SaveButton envoi FTP //CONNEXION UnknownHostException: "
                            + eftp1);
            JOptionPane.showMessageDialog(this,
                    "L'image n'a pu être envoyée ! \n Réessayez plus tard",
                    " Erreur lors de l'envoi", JOptionPane.WARNING_MESSAGE);

        } catch (IOException eftp2) {

            System.out
                    .println("Erreur class SaveButton envoi FTP //CONNEXION IOException : "
                            + eftp2);
            JOptionPane.showMessageDialog(this,
                    "L'image n'a pu être envoyée ! \n Réessayez plus tard",
                    " Erreur lors de l'envoi", JOptionPane.WARNING_MESSAGE);
        }

        // LOGIN AVEC MP
        try {
            ftpVariable.login(loginFTP, mpFTP);

        } catch (IOException eftp3) {

            System.out
                    .println("Erreur class SaveButton envoi FTP // LOGIN AVEC MP : "
                            + eftp3);
            JOptionPane.showMessageDialog(this,
                    "L'image n'a pu être envoyée ! \n Réessayez plus tard",
                    " Erreur lors de l'envoi", JOptionPane.WARNING_MESSAGE);

        }

        // UPLOAD DE LA NOUVELLE IMAGE CREE
        try {

            if (extension.equals(".bmp")) {
                ftpVariable.uploadFile(repertoireServeur + "img_"
                        + dateFormatee + ".bmp", cheminImage);
            }
            if (extension.equals(".gif")) {
                ftpVariable.uploadFile(repertoireServeur + "img_"
                        + dateFormatee + ".gif", cheminImage);
            }
            if (extension.equals(".jpg")) {
                ftpVariable.uploadFile(repertoireServeur + "img_"
                        + dateFormatee + ".jpg", cheminImage);
            }
            if (extension.equals(".jpeg")) {
                ftpVariable.uploadFile(repertoireServeur + "img_"
                        + dateFormatee + ".jpg", cheminImage);
            }
            if (extension.equals(".png")) {
                ftpVariable.uploadFile(repertoireServeur + "img_"
                        + dateFormatee + ".png", cheminImage);
            }

        } catch (IOException eftp4) {

            System.out
                    .println("Erreur class SaveButton envoi FTP // UPLOAD DE LA NOUVELLE IMAGE CREE : "
                            + eftp4);
            JOptionPane.showMessageDialog(this,
                    "L'image n'a pu être envoyée ! \n Réessayez plus tard",
                    " Erreur lors de l'envoi", JOptionPane.WARNING_MESSAGE);
        }

        // LOGOUT
        try {

            ftpVariable.logout();

        } catch (IOException eftp5) {

            System.out.println("Erreur class SaveButton envoi FTP // LOGOUT : "
                    + eftp5);
            JOptionPane.showMessageDialog(this,
                    "L'image n'a pu être envoyée ! \n Réessayez plus tard",
                    " Erreur lors de l'envoi", JOptionPane.WARNING_MESSAGE);
        }

        // DECONNEXION
        ftpVariable.disconnect();
        nb++;

        JOptionPane.showMessageDialog(this, "Votre image a bien été envoyée",
                "Envoi réussi", JOptionPane.INFORMATION_MESSAGE);

        /*-----------------------------------------------------------------------------------
         --------------------------------  Fin de Envoi vers FTP ------------------------------
         ------------------------------------------------------------------------------------*/

    }

-------------------
PortFolio
-------------------

12 réponses

Messages postés
744
Date d'inscription
dimanche 1 avril 2007
Statut
Membre
Dernière intervention
9 mai 2010
8
Regarde pourquoi ça marche pas...
Je ne suis pas un compilateur sur patte mais bon je pense que le this n'est pas vraiment approprié étant donné que tu es dans une classe imbriqué (thread).
Tu peux remplacer le "this" par "Nom_de_ta_classe.this" où tu mets le nom de ta classe où se trouve la classe imbriqué Thread.

Tu vois? je pense que ça marchera comme ça

<hr width="100%" size="2" />Timmy!!!
Messages postés
519
Date d'inscription
mercredi 21 mars 2007
Statut
Membre
Dernière intervention
19 décembre 2016
25
Salut,

Qu'est ce qui se passe exactement?

C'est normal que la barre de chargement ne se remplisse pas, il faut faire des setValue dessus. Et tu n'en fait pas dans ton code il me semble.
Messages postés
113
Date d'inscription
mardi 9 avril 2002
Statut
Membre
Dernière intervention
12 août 2016

Oui mais le problème ne vient pas de là (ma barre est en valeur indéterminé donc elle tourne toujorus c'est juste un test) en fait quand je clic sur le bouton envoyer il envoi d'abord le fichier et ensutie affiche ma barre de progression. Parait il que c'est normal il faudrait que j'utilise des Thread mais j'avoue que je n'y comprend pas grand choses.
Merci de ton aide

-------------------
PortFolio
-------------------
Messages postés
519
Date d'inscription
mercredi 21 mars 2007
Statut
Membre
Dernière intervention
19 décembre 2016
25
ah oui, excuse-moi je n'avais pas vu le setIndeterminate(true) ;)

C'est bizarre, j'ai fait un exemple simplifié avec un long calcul sans utiliser de thread, et la barre est affichée correctement.

Essaie de mettre un :
<hr size="2" width="100%" />
// ta creation de fenetre avec les composants dont la progress bar

new Thread(){
    public void run(){

        // ton traitement ici  

    }
}.start();
Messages postés
113
Date d'inscription
mardi 9 avril 2002
Statut
Membre
Dernière intervention
12 août 2016

Merci beaucoup ça marche !
Seul petit problème c'est que dans le Thread il n'accepte pas :
JOptionPane.showMessageDialog(this,
                                    "L'image n'a pu être envoyée ! \n Réessayez plus tard",
                                    " Erreur lors de l'envoi", JOptionPane.WARNING_MESSAGE);
Alors que j'ai besoin de ça pour prévenir l'utilisateur que c'est OK si t'aurais une solution rapidement.
Merci encore

-------------------
PortFolio
-------------------
Messages postés
113
Date d'inscription
mardi 9 avril 2002
Statut
Membre
Dernière intervention
12 août 2016

Merci encore mais c'est grave comme je me rend comtpe que je me casse la tête sur de problèmes parfois tout bête ...
Si j'ai d'autre problème je te tiens au courant

-------------------
PortFolio
-------------------
Messages postés
744
Date d'inscription
dimanche 1 avril 2007
Statut
Membre
Dernière intervention
9 mai 2010
8
Mais non t'inquietes, dis toi que nous aussi on est passé par là.

Fallait le savoir, c'est tout

Et puis si tout le monde savait tout, il n'y aurait pas de codes-sources, ça serait triste ;)

Allé bonne chance

<hr size="2" width="100%" />Timmy!!!
Messages postés
113
Date d'inscription
mardi 9 avril 2002
Statut
Membre
Dernière intervention
12 août 2016

Dernier problème une fois que mon image est envoyé ou qu'il y a eu un problème une petite fenetre se ferme mais au centre mon image est toujours affiché et pire un cadre blanc est placé là ou etait la fenetre de chargement avant. J'ai bien essayé un repaint mais sans résultat car ma methode paint() est dans un autre classe donc je ne voit pas trop comment faire.
Merci j'espere avoir été clair parce que je sais pas trop comment expliquer.

-------------------
PortFolio
-------------------
Messages postés
113
Date d'inscription
mardi 9 avril 2002
Statut
Membre
Dernière intervention
12 août 2016

Au pire il faudrait que je fasse recharger mon applet ou actualiser la page du navigateur mais je ne sais pas comment faire.

-------------------
PortFolio
-------------------
Messages postés
744
Date d'inscription
dimanche 1 avril 2007
Statut
Membre
Dernière intervention
9 mai 2010
8
Non, il faut bien appeller les méthodes de redessinage des composants... c'est là que les limites de swing commencent à arriver. Enfin, je veux dire c'est farfelu pour trouver.

Fais bien les repaint() comme il faut, essaie de voir que toutes les méthodes repaint de tous les composants pouvant se trouver sous la zone à rafraichir s'exécutent...

Enfin, là, il n'y a pas de secret --> chercher

<hr size="2" width="100%" />Timmy!!!
Messages postés
113
Date d'inscription
mardi 9 avril 2002
Statut
Membre
Dernière intervention
12 août 2016

Tiens si tu veux tester voici l'url : http://florent.lagoda.free.fr/applet/applet.html tu verras mieux ce que je veux dire

-------------------
PortFolio
-------------------
Messages postés
744
Date d'inscription
dimanche 1 avril 2007
Statut
Membre
Dernière intervention
9 mai 2010
8
Attend on est hors sujet là... on continue en MP

<hr size="2" width="100%" />Timmy!!!