Bonjour j'ai créer ce bean pour qu'il fonctionne avec une bean box et j'aimerais le faire fonctioner dans une fenêtre awt ou swing,
Pourais-t'on me donnner un tuto ou un début afin que je puisse metre cela dans une fênêtre JAVA
Merci d'avance
import javax.swing.* ;
import java.awt.* ;
import java.awt.event.* ;
import javax.swing.event.* ;
import java.net.URL ;
import java.io.* ;
import java.util.* ;
import java.awt.image.*;
import java.beans.*;
/**
* Une classe qui permet d'affiche une image dans un composant graphique.
* A utiliser dans un bean et une beanbox.
*/
public class Viewer extends Canvas implements Serializable, ActionListener,ImageObserver {
/** Le timer pour le mode diaporama. */
protected javax.swing.Timer timer ;
/** Un tableau pour stocker les images a afficher. */
protected Image [] images ;
/** Commence par initialiser le chemin vers l'image a afficher.
*/
public Viewer() {
super();
setSize( 160, 90 );
imagePath = "D:\images\" ;
load();
tempo = 2 * 1000 ;
loop = true ;
timer = new javax.swing.Timer( tempo, this );
timer.setRepeats( true );
timer.start();
}
/**
* Charge toutes les images du repertoire dans lengthtableau d'Images.
*/
public void load() {
// Recupere les noms des fichers.
files = new File( imagePath ).listFiles
( new FilenameFilter() {
public boolean accept( File dir, String name ) {
return name.endsWith( ".jpg" ) || name.endsWith( ".gif" );
}
}
);
this.images = new Image [ files.length ];
for ( int i = 0 ; i < files.length ; ++ i ) {
images [ i ] = Toolkit.getDefaultToolkit().getImage( imagePath + "\\" + files [ i ].getName());
}
current = 0 ;
}
/**
* Utilisé par le timer en mode diaporama.
*/
public void actionPerformed( ActionEvent event ) {
this.suivant();
}
/**
* Afficher une image
*/
public void paint( Graphics g ) {
int largeur, hauteur;
if( files.length > 0 ) {
largeur = getWidth();
hauteur = getHeight();
boolean test = g.drawImage( images [ current ], 0, 0,largeur,hauteur, this );
}
}
/**
* Affiche la premiere image.
*/
public void premier() {
current = 0 ;
repaint();
notifyImageChanged();
}
/**
* Affiche la derniere image.
*/
public void dernier() {
current = files.length -1 ;
repaint();
notifyImageChanged();
}
/**
* Affiche l'image suivante.
*/
public void suivant() {
if ( loop ) current = ( current + 1 ) % files.length ;
else current = current == files.length -1 ? current : current + 1 ;
repaint();
notifyImageChanged();
}
/**
* Affiche l'image precedente.
*/
public void precedent() {
current = current == 0 ? files.length -1 : (( current - 1 ) % files.length );
repaint();
notifyImageChanged();
}
/**
* Pour arreter le loop ou pour redemarrer
*/
public void startStop() {
if( getLoop()) setLoop( false );
else setLoop( true );
}
/** Chemin vers l'image a afficher */
protected String imagePath ;
protected Image image ;
protected File [ ] files ;
protected int current ; // the current file displayed.
/**
* propriete pour indiquer si on doit boucler ou non.
*/
protected boolean loop ;
public boolean getLoop() { return loop ; }
public void setLoop( boolean value ) {
loop = value ;
if ( loop ) timer.restart(); // Reconfigurer le timer.
else timer.stop();
}
/**
* Valeur de la temporisation en mode diaporama.
*/
protected int tempo ;
public int getTempo() { return tempo ; }
public void setTempo( int value ) {
tempo = value ;
this.timer.setDelay( tempo );
}
/**
* Accesseur & modificateur pour le repertoire d'images
*/
public void setChemin(String newImagePath) {
String OldImagePath = imagePath;
imagePath = newImagePath;
propertyChangeListeners.firePropertyChange("Chemin des Images", OldImagePath, newImagePath);
load();
}
public String getChemin() { return imagePath ; }
/**
* Gestion d'evenements java bean. Changement d'image.
*/
protected Vector listeners ;
private transient PropertyChangeSupport propertyChangeListeners = new PropertyChangeSupport(this);
public synchronized void removePropertyChangeListener(PropertyChangeListener l) {
super.removePropertyChangeListener(l);
propertyChangeListeners.removePropertyChangeListener(l);
}
public synchronized void addPropertyChangeListener(PropertyChangeListener l) {
super.addPropertyChangeListener(l);
propertyChangeListeners.addPropertyChangeListener(l);
}
public void addImageChangedListener( ImageChangedListener listener ) {
if ( listeners == null )
listeners = new Vector();
if ( ! listeners.contains( listener ))
listeners.add( listener );
}
public void removeImageChangedListener( ImageChangedListener listener ) {
if ( listeners.contains( listener))
listeners.remove( listener );
}
public void notifyImageChanged() {
Image image = images [ current ];
String path = files [ current ].getParent() + "\\" + files [ current ].getName();
ImageChangedEvent event = new ImageChangedEvent( this, image.getWidth( this ), image.getHeight( this ), path);
Vector copy ;
synchronized ( this ) {
if ( listeners == null ) return ;
copy = ( Vector ) listeners.clone();
}
Iterator iter = copy.iterator();
while ( iter.hasNext()) {
ImageChangedListener listener = ( ImageChangedListener ) iter.next();
listener.imageChanged( event );
}
}
}