IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

AWT/Swing Java Discussion :

porbleme java canvas


Sujet :

AWT/Swing Java

  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    226
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2007
    Messages : 226
    Points : 72
    Points
    72
    Par défaut porbleme java canvas
    Bonjour le programme que j'ai fait ne fonctionne pas dans une beanbox. j'aimreais lancer ensuite directement dans une fenêtre swing en autoexécutable mais je veux la faire fontionner dans une bean box
    si quelqu'un peut m'aider merci d'avance

    Voici le code complet

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    134
    135
    136
    137
    138
    139
    140
    141
    142
    143
    144
    145
    146
    147
    148
    149
    150
    151
    152
    153
    154
    155
    156
    157
    158
    159
    160
    161
    162
    163
    164
    165
    166
    167
    168
    169
    170
    171
    172
    173
    174
    175
    176
    177
    178
    179
    180
    181
    182
    183
    184
    185
    186
    187
    188
    189
    190
    191
    192
    193
    194
    195
    196
    197
    198
    199
    200
    201
    202
    203
    204
    205
    206
    207
    208
    209
    210
    211
    212
    213
    214
    215
    216
    217
    218
    219
    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 = "Z:\\2A\\java\\tp2\\tp2" ;
            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 );
            }
        }
     
    }

  2. #2
    Membre émérite
    Avatar de xavlours
    Inscrit en
    Février 2004
    Messages
    1 832
    Détails du profil
    Informations forums :
    Inscription : Février 2004
    Messages : 1 832
    Points : 2 410
    Points
    2 410
    Par défaut
    Bonjour,

    Sans trop savoir ce qu'est une BeanBox, je peux te proposer d'essayer d'utiliser des composants Swing plutôt qu'awt. Pour ça il faut remplacer :
    - Canvas par JPanel (ou JComponent)
    - paint(Graphics g) par paintComponent(Graphics g) (optionnel, mais c'est mieux)

    Peut-être que ça pourra t'aider ?
    "Le bon ni le mauvais ne me feraient de peine si si si je savais que j'en aurais l'étrenne." B.V.
    Non au langage SMS ! Je ne répondrai pas aux questions techniques par MP.
    Eclipse : News, FAQ, Cours, Livres, Blogs.Et moi.

Discussions similaires

  1. selection d'une partie d'un canvas java
    Par hammasaidi dans le forum 2D
    Réponses: 7
    Dernier message: 21/09/2010, 15h38
  2. imprimer une canvas avec java
    Par hammasaidi dans le forum Graphisme
    Réponses: 2
    Dernier message: 20/04/2010, 14h28
  3. zoom sur le contenue d'un canvas java
    Par hammasaidi dans le forum 2D
    Réponses: 12
    Dernier message: 19/04/2010, 12h43
  4. Porblème d'encodage avec un EDI java sous Suse 9.3 pro
    Par HNT dans le forum Applications et environnements graphiques
    Réponses: 6
    Dernier message: 12/11/2005, 12h32

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo