Lier une JProgressBar à une méthode à durée indéterminée

Lier une JProgressBar à une méthode à durée indéterminée - Java - Programmation

Marsh Posté le 21-05-2008 à 11:52:18    

Bonjour à tous,
 
je suis actuellement en train de développer un programme de redimensionnement d'image avec la méthode de Seam-Carving.  
En gros il me reste seulement l'interface à faire, mais n'ayant jamais vraiment pratiqué j'éprouve quelques difficultés.
 
Là mon problème est que je n'arrive pas à afficher une pop-up avec une JProgressBar pendant le calcul de ma nouvelle image(ce calcul est d'une durée indéterminée).
J'ai lu le tuto de Sun http://java.sun.com/docs/books/tut [...] gress.html avec notamment la partie sur les ProgressMonitor mais je n'obtiens pas grand chose à part quelques erreurs ^^.  
 
Au niveau du code j'ai pour le moment une classe Fenetre qui contient entre autres mon JButton pour lancer ma méthode de redimensionnement et une classe MaJProgressBar avec ma JProgressBar.
 
Classe Fenetre :

Code :
  1. //Ma fonction qui me renvoit une partie de mon menu avec mon bouton qui lance le redimensionnement
  2. private JPanel getMenuImage() {
  3.   if (jMenuImage == null) {
  4.    JButton boutonSC = new JButton("Lancer SC" );
  5.    jMenuImage = new JPanel();
  6.    jMenuImage.setLayout(new GridBagLayout());
  7.    jMenuImage.add(boutonSC, new GridBagConstraints(0, 2, 2, 2, 1.0, 0.0, GridBagConstraints.NORTH, GridBagConstraints.HORIZONTAL, new Insets(5, 5, 5, 5), 0, 0));
  8.    boutonSC.addActionListener(new ActionListener() {
  9.           public void actionPerformed(ActionEvent ae) {
  10.              SeamCarving sc = new SeamCarving(lienImage);
  11.              sc.reduction(100, 100, labelImage, true); // la méthode de redimensionnement
  12.              labelImage.setIcon(new ImageIcon(sc.matriceRGB.matriceToImage())); // on affiche la nouvelle image
  13.           }
  14.        });
  15.   }
  16.   return jMenuImage;
  17.  }


 
En vous remerciant d'avance pour votre aide  ;)

Reply

Marsh Posté le 21-05-2008 à 11:52:18   

Reply

Marsh Posté le 21-05-2008 à 12:25:53    

Ton moteur de rendu doit avertir ceux qui sont à son écoute quand il progresse dans la transformation.
 
 

Code :
  1. public void rendu() {
  2.     while(jeModifieL'Image) {
  3.         pourcentageFait = getPourcentageFait();
  4.         for(ProgressListener listener : listeners) {
  5.                listener.updatePourcentage(pourcentageFait);
  6.         }
  7.         reductionImage();
  8.     }
  9. }


---------------
my flick r - Just Tab it !
Reply

Marsh Posté le 22-05-2008 à 19:48:48    

Désolé de ma réponse tardive et merci de m'avoir répondu.
 
J'ai donc lu ce que tu m'as mis mais une chose me parait bizarre au premier abord. Comment évaluer un pourcentage de mon opération?
La durée d'exécution dépend de plusieurs choses.
 
J'ai fait quelques tentatives avec des JProgressBar et des ProgressMonitor mais rien de bien concluant  :(  
 
Pour le moment je me consacre à des choses plus importantes mais si quelqu'un a une idée qu'il fasse signe  :)

Reply

Marsh Posté le 22-05-2008 à 19:56:56    

Pourquoi ne pas mettre une progressbar avec typeindetermine, car si c'est indéterminé  autant mettre en évidence que cela peut prendre un temps indetermine au lieu de calculer des pourcentages

 

mettre setIndeterminate à true,

 

après je ne vois pas pourquoi ca marche pas une progress bar indeterminer se resume sur 2 lignes.

 

(Ne pas oublier le thread pou un cote le calcul de l'autre la progressbar)


Message édité par chaos vaginal le 22-05-2008 à 20:14:24
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed