Java bean

darkspoilt Messages postés 254 Date d'inscription jeudi 13 janvier 2005 Statut Membre Dernière intervention 10 octobre 2013 - 15 oct. 2007 à 11:10
darkspoilt Messages postés 254 Date d'inscription jeudi 13 janvier 2005 Statut Membre Dernière intervention 10 octobre 2013 - 17 oct. 2007 à 09:05
Bonjour,
Je voudrais savoir si quelqu'un peu m'aider a programmer ou me fournir une aplication java permettant d'afficher un défilement d'images (avec suivant, précédent) voir un diaporama ave un timer, en utilisant les bean.
Merci d'avance.

10 réponses

Twinuts Messages postés 5374 Date d'inscription dimanche 4 mai 2003 Statut Modérateur Dernière intervention 3 mars 2023 111
15 oct. 2007 à 11:57
Salut,

tu as qu'oi comme problème? à quel niveau de ton dev tu buches ?

------------------------------------
"On n'est pas au resto : ici on ne fait pas dans les plats tout cuits ..."

OoWORAoO
0
darkspoilt Messages postés 254 Date d'inscription jeudi 13 janvier 2005 Statut Membre Dernière intervention 10 octobre 2013
15 oct. 2007 à 11:59
L'utilisation et la création del 'interface graphique et un tuto pour bien me faire comprendre les beans
0
Twinuts Messages postés 5374 Date d'inscription dimanche 4 mai 2003 Statut Modérateur Dernière intervention 3 mars 2023 111
15 oct. 2007 à 12:06
Salut,

pour les tutos sur les IHM tu peux regarder dans ceux dispo sur le site, pour les beans il y en a masse sur google.

------------------------------------
"On n'est pas au resto : ici on ne fait pas dans les plats tout cuits ..."

OoWORAoO
0
darkspoilt Messages postés 254 Date d'inscription jeudi 13 janvier 2005 Statut Membre Dernière intervention 10 octobre 2013
16 oct. 2007 à 09:12
Voila j'ai créer ca avec les autres classes qui vont avec mais je ne vois pas comment l'utiliser avec un jpanel pour qu'il soit apres exécutable directement ave un jar

Ah oui peux t'on charger statiquement les images qui seraient dans un jar?

/**
 * Bean1.java     
 */


import java.awt.*;
import java.io.*;
import java.beans.*;
import java.awt.event.*;
import javax.swing.*;
import java.util.*;


/**
 * Cette classe definit un bean permettant d'afficher successivement des images
 * stockees dans un repertoire.
 */


public class Bean1 extends Canvas implements Serializable, PropertyChangeListener{
    // Tableau d'images.
    private Image[] image;
    // Chemin d'acces aux images.
    private File path;
    // Tableau de noms d'images.
    private String[] list;
    // Indice d'image dans le tableau.
    private int numero;
    // Booleen permettant d'activer le mode diaporama.
    private boolean diapo;
    // Booleen permettant d'activer le mode boucle.
    private boolean loop;
    // Attribut permettant de choisir la temporisation dans l'affichage.
    private int tempo;
    // Attribut permettant de choisir le repertoire d'images.
    private String rep="Z:\\bean\\dessins\";
    // Gestion de la notification des changements.
    private PropertyChangeSupport changement; 
    // Vecteur contenant les evenements du aux changements d'images.
    private Vector imageChangeListeners=new Vector();


    // Constructeur de la classe.
    public Bean1(){
 try {
     path=new File(rep);
     list=path.list(new MyFilenameFilter());
     image=new Image[list.length+1];
     numero=0;
     diapo=false;
     loop=false;
     tempo=500;
     changement = new PropertyChangeSupport(this);
     chargeImage();
 }
 catch(Exception ex) {
     ex.printStackTrace();
 }
 addPropertyChangeListener(this);
    }
   
    // Chargement des images du repertoire.  
    public void chargeImage(){
 numero=0;
 for(int i=0;i<list.length;i++){
     image[i] = getToolkit().getImage( rep + list[i]);
     prepareImage(image[i], this);
 }
 setSize(250,250);
    }
   
    // Affichage des images et test du mode diaporama.
    public synchronized void paint(Graphics g){
 g.drawImage(image[numero], 0, 0, this);
 if (diapo==true){
     notifyImageChange(image[numero],list[numero]);
     try{
  Thread.sleep(tempo);
     }
     catch(InterruptedException e){System.out.println ("Erreur");}
     if((numero==list.length-1) && (loop==false))
  diapo=false;
     suivant();
 }
    }
   
    // Affichage de la premiere image. 
    public void debut(){numero=0;repaint();}
   
    // Affichage de l'image suivante.
    public void suivant(){
 if(numero==list.length-1) numero=0;
 else numero++;
 repaint();
    }
   
    // Affichage de l'image precedente.
    public void precedent(){
 if(numero==0)
     numero=list.length-1;
 else
     numero--;
 repaint();
    }
   
    // Affichage de la derniere image.
    public void fin(){
 numero=list.length-1;
 repaint();}


    // Methodes gerant le mode Diaporama.
    public boolean getDiaporama(){return diapo;}
    public void setDiaporama(boolean b){diapo=b;}


    // Methodes gerant le mode Boucle.
    public boolean getBoucle(){return loop;}
    public void setBoucle(boolean b){loop=b;}


    // Methodes gerant la temporisation.
    public int getTemporisation(){return tempo;}
    public void setTemporisation(int t){tempo=t;}
   
    // Methodes gerant le repertoire d'images.
    public String getRep(){return rep;}
    public void setRep(String s){
 // Notification d'un changement de repertoire.
 changement.firePropertyChange("rep",rep,s);
    }


    // Implementation de la methode d'abonnement.
    public void addPropertyChangeListener(PropertyChangeListener l){
 changement.addPropertyChangeListener(l);
    }
   
    // Implementation de la methode de desabonnement.
    public void removePropertyChangeListener(PropertyChangeListener l){
 changement.removePropertyChangeListener(l);
    }
   
    // Implementation de l'interface PropertyChangeListener.
    public void propertyChange(PropertyChangeEvent e){
 if(e.getPropertyName()=="rep"){
     String s = e.getNewValue().toString();
     path=new File(s);
     if (path.isDirectory()){
  rep = path.toString();
  if(!rep.endsWith("\")) rep = rep + "\";
  list=path.list();
  chargeImage();
  repaint();
     }
 }
    }


    // Implementation de addImageChangeListener.
    public synchronized void addImageChangeListener(ImageChangeListener l){
 if(!imageChangeListeners.contains(l))
     imageChangeListeners.addElement(l);
    }


    // Implementation removeImageChangeListener.
    public synchronized void removeImageChangeListener(ImageChangeListener l){
 if(imageChangeListeners.contains(l))
     imageChangeListeners.removeElement(l);
    }
   
    // Notification du changement d'image.    
    private void notifyImageChange(Image image, String chemin){
 ImageChangeEvent e=new ImageChangeEvent(this,chemin,image.getHeight(this),image.getWidth(this));
 Vector v;
 synchronized(this){v = (Vector) imageChangeListeners.clone();}
 Iterator iterateur = v.iterator();
 while(iterateur.hasNext()){
     ((ImageChangeListener) iterateur.next()).imageChange(e);
 }
    }
}




 
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Twinuts Messages postés 5374 Date d'inscription dimanche 4 mai 2003 Statut Modérateur Dernière intervention 3 mars 2023 111
16 oct. 2007 à 09:50
Salut,

j'ai pas regarder tous le code (pas encore bien réveillé ^^) et je n'ai pas trop compris ce que tu voulais faire mais bon tu veux un JPanel en voici en voilou :

Note : tu trouveras en rouge les modif pour le JPanel

/**
 * Bean1.java     
 */ import java.awt.*;
import java.io.*;
import java.beans.*;
import java.awt.event.*;
import javax.swing.*;
import java.util.*;

/**
 * Cette classe definit un bean permettant d'afficher successivement des images
 * stockees dans un repertoire.
 */

public class Bean1 extends JPanel implements Serializable, PropertyChangeListener{
    [...]

    // Chargement des images du repertoire.  
    public void chargeImage(){
        [...]
       setPreferredSize(250,250);
    }
   
    // Affichage des images et test du mode diaporama.
    public synchronized void paintComponent(Graphics g){

       super.paintComponents(g);
       g.drawImage(image[numero], 0, 0, this);
       if (diapo==true){
           notifyImageChange(image[numero],list[numero]);
           try{
               Thread.sleep(tempo);
           } catch(InterruptedException e){System.out.println ("Erreur");}
           if((numero==list.length-1) && (loop==false))
               diapo=false;
           suivant();
        }
    }

    [...] 
}

Il te reste plus qu'a mettre ton panel dans une fenetre et d'afficher celle-ci.
Pour ce qui est de l'image dans le jar regarde dans le forum il y a la réponse.
Autre point en java n'utilise JAMAIS l'anti slash '\' comme séparateur de fichiers soit tu utilise simple le slash '/' (qui fonctionne très bien sous windoz) soit tu utilises java.io.File.separator.....

------------------------------------
"On n'est pas au resto : ici on ne fait pas dans les plats tout cuits ..."

OoWORAoO
0
darkspoilt Messages postés 254 Date d'inscription jeudi 13 janvier 2005 Statut Membre Dernière intervention 10 octobre 2013
16 oct. 2007 à 10:12
En fait je veux charger les images d'un dossier et les faire défiler comme un diaporama mais tout cela dans une fenetre et je dois utiliser canvas apparement pour manipuler les objets mais j'aimerais que ca s'ouvre dans une fenêtre ou je puisse affihcer mes images
0
Twinuts Messages postés 5374 Date d'inscription dimanche 4 mai 2003 Statut Modérateur Dernière intervention 3 mars 2023 111
16 oct. 2007 à 10:32
Salut,

Bon si tu veux une JFrame dessine dans un JPanel, car il ne faut JAMAIS mélanger AWT et SWING
en attendant :

public static void main(String... args) {
    JFrame f = new JFrame();
    f.setTitle("title");
    f.setContentPane(new Bean1());
    f.setSize(300, 300); // ou f.pack();
    f.setLocationRelativeTo(null);
    f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    f.setVisible(true);
}

------------------------------------
"On n'est pas au resto : ici on ne fait pas dans les plats tout cuits ..."

OoWORAoO
0
darkspoilt Messages postés 254 Date d'inscription jeudi 13 janvier 2005 Statut Membre Dernière intervention 10 octobre 2013
16 oct. 2007 à 11:40
Et est ce que je peux mettre mes images dans le jar pour qu'il aille le chercher directement a l'intérieur au lieu  de suivre le lien
0
Twinuts Messages postés 5374 Date d'inscription dimanche 4 mai 2003 Statut Modérateur Dernière intervention 3 mars 2023 111
16 oct. 2007 à 11:46
Salut,

comme je t'ai dit 2 postes au dessus :

"Pour ce qui est de l'image dans le jar regarde dans le forum il y a la réponse."
Donc je sous entend que oui tu peux le faire.

------------------------------------
"On n'est pas au resto : ici on ne fait pas dans les plats tout cuits ..."

OoWORAoO
0
darkspoilt Messages postés 254 Date d'inscription jeudi 13 janvier 2005 Statut Membre Dernière intervention 10 octobre 2013
17 oct. 2007 à 09:05
Sinon j'ai essayé d'affichier mon image provenant d'un bean dans une fenetre avec ton code cela ne fonctionne pas
0