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 :

changement dynamique d'image en swing


Sujet :

AWT/Swing Java

  1. #1
    Nouveau membre du Club
    Inscrit en
    Février 2006
    Messages
    52
    Détails du profil
    Informations forums :
    Inscription : Février 2006
    Messages : 52
    Points : 34
    Points
    34
    Par défaut changement dynamique d'image en swing
    bonjour,

    je cherche à developper une visionneuse en java le problème se situe au changement d'image, lors du clique sur le bouton "suivant" par exemple je veux passer à l'image suivante mais ca marche pas...
    niveau code j'utilise un Vector d'image
    vect = new Vector();
    vect.addElement(image1);
    vect.addElement(image2);
    vect.addElement(image3);
    vect.addElement(image4);

    j'ai des boutons dans ma JFrame et pr implémenter les évènement je fais

    public class Visionneuse extends JFrame implements ActionListener


    et donc apres pour passer à l'image suivante je penser faire ca mais ca marche pas

    public void actionPerformed(ActionEvent e) {

    if(e.getSource().equals(buotonSuivant)){
    this.getContentPane().add((Component) vect.get(1));
    }
    }

    alors si vous pouvez m'aider......merci

  2. #2
    Invité
    Invité(e)
    Par défaut
    tu as une erreur ? ou bien l'image reste la même ?
    tes objets images1, image2... c'est quoi comme composant ?

    quand tu fais
    this.getContentPane().add((Component) vect.get(1));
    tu ajoute un composant à ton conteneur sans supprimer le précédent, peut-être alors est-ce un probleme de taille de ton conteneur ou de placement.

    Est-ce que les composants sont tous rafraîchis ?

    il manque des infos, peut-être un bout de code plus complet.

  3. #3
    Membre habitué Avatar de Process Linux
    Inscrit en
    Septembre 2003
    Messages
    136
    Détails du profil
    Informations forums :
    Inscription : Septembre 2003
    Messages : 136
    Points : 149
    Points
    149
    Par défaut
    Dans le constructeur de la fenêtre , est ce que tu as ajouté la délégation de l'événement à la fenêtre en outre il faut avoir qq chose comme dans le constructeur de la fenêtre :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    JButton b = new JButton("Suivant");
    ...
    ...
    b.addActionListener(this);
    ....

  4. #4
    Nouveau membre du Club
    Inscrit en
    Février 2006
    Messages
    52
    Détails du profil
    Informations forums :
    Inscription : Février 2006
    Messages : 52
    Points : 34
    Points
    34
    Par défaut
    ce que je met dans mon vector c'est des JPanel avec un fond image en faite je fais suivre le code vous comprendrais mieux

    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
    classe visionneuse
    package presentation;
    /*
     * Created on 31 mars 2006
     */
    /**
     * @author Johnny GIMENEZ
     */
    import javax.swing.*;
    import java.awt.*;
    import java.awt.event.*;
    import java.util.Vector;
     
    public class Visionneuse extends JFrame implements ActionListener {
     
     
    	protected JPanel panNavigation;
    	protected JButton buAvance, buArriere, buZoomAvt, buZoomArr, buOrigine, buFin;
    	protected Vector vect;
     
     
    	public Visionneuse(){
     
     
            this.getContentPane().setLayout(new FlowLayout());
            Image icone = Toolkit.getDefaultToolkit().getImage("Icones/boudou.gif");
    		this.setIconImage(icone);
            this.setTitle("Visionneuse de planches");
     
     
     
            CpImageResized image1 =new CpImageResized(Toolkit.getDefaultToolkit().getImage("Icones/Album/ichigo.jpg"),
            					  new Dimension(700,700));
            CpImageResized image2 =new CpImageResized(Toolkit.getDefaultToolkit().getImage("Icones/Album/LesNombrils_p3.jpg"),
            						new Dimension(700,700));
            CpImageResized image3 =new CpImageResized(Toolkit.getDefaultToolkit().getImage("Icones/Album/asterix_ciel.jpg"),
    				  				new Dimension(700,700));
            CpImageResized image4 =new CpImageResized(Toolkit.getDefaultToolkit().getImage("Icones/Album/LesNombrils_cover.jpg"),
            						new Dimension(700,700));
     
        vect = new Vector();
        vect.addElement(image1);
        vect.addElement(image2);
        vect.addElement(image3);
        vect.addElement(image4);
     
     
     
            panNavigation = new JPanel(new GridLayout(1,5));
            buAvance = new JButton(new ImageIcon("Icones/avance.png"));
            buAvance.setPressedIcon(new ImageIcon("Icones/avancePressed.png"));
            buAvance.addActionListener(this);
            buArriere = new JButton(new ImageIcon("Icones/arriere.png"));
            buArriere.setPressedIcon(new ImageIcon("Icones/arrierePressed.png"));
            buZoomAvt = new JButton(new ImageIcon("Icones/zoomAvt.png"));
            buZoomAvt.setPressedIcon(new ImageIcon("Icones/zoomAvtPressed.png"));
            buZoomArr = new JButton(new ImageIcon("Icones/zoomArr.png"));
            buZoomArr.setPressedIcon(new ImageIcon("Icones/zoomArrPressed.png"));
            buOrigine = new JButton(new ImageIcon("Icones/origine.png"));
            buOrigine.setPressedIcon(new ImageIcon("Icones/originePressed.png"));
            buFin = new JButton(new ImageIcon("Icones/fin.png"));
            buFin.setPressedIcon(new ImageIcon("Icones/finPressed.png"));
     
            panNavigation.add(buOrigine);
            panNavigation.add(buArriere);
            panNavigation.add(buZoomAvt);
            panNavigation.add(buZoomArr);
            panNavigation.add(buAvance);
            panNavigation.add(buFin);
     
     
     
     
     
           // this.setContentPane(image1);
            this.getContentPane().add((Component) vect.get(3));
            this.getContentPane().add(panNavigation);
            this.setSize(700,790);
            this.setResizable(false);
     
     
            //mettre le fenetre au milieu de l'écran
    		Dimension screenSize = Toolkit.getDefaultToolkit().getScreenSize();
    		Dimension frameSize = this.getSize();
    		if (frameSize.height > screenSize.height) {
    		frameSize.height = screenSize.height;
    		}
    		if (frameSize.width > screenSize.width) {
    		frameSize.width = screenSize.width;
    		}
    		this.setLocation( (screenSize.width - frameSize.width) / 2,
    		(screenSize.height - frameSize.height) / 2);
     
     
     
     
     
        	// Création de la fenêtre
        	/*ImageTrack view = new ImageTrack();
        	// Mise en place
        	view.pack();
        	// Affichage de la fenêtre
        	view.setVisible(true);*/
     
     
     
     
     
     
     
     
     
     
    	}
     
     
     
     
    	public void actionPerformed(ActionEvent e) {
     
    			if(e.getSource().equals(buOrigine)){ 
    				//this.getContentPane().add((Component) vect.get(0));
    			}
     
    			else if(e.getSource().equals(buArriere)){
    		    }
     
    			else if(e.getSource().equals(buZoomAvt)){
    		    }
     
    			else if(e.getSource().equals(buZoomArr)){
    		    }
     
    			else if(e.getSource().equals(buAvance)){
    				this.getContentPane().remove(0);
    				this.getContentPane().add((Component) vect.get(3));
    			}
     
    			else if(e.getSource().equals(buFin)){
    			}
     
    	}
     
    }
    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
    classe CpImageResized
    package presentation;
    /*
     * Created on 31 mars 2006
     */
    /**
     */
    import java.awt.Color;
    import java.awt.Rectangle;
     
    import java.awt.Dimension;
     
    import java.awt.Graphics;
     
    import java.awt.Graphics2D;
     
    import java.awt.Image;
     
    import java.awt.event.ActionListener;
     
    import java.awt.event.MouseEvent;
     
    import java.awt.event.MouseListener;
     
    import javax.swing.JComponent;
    import javax.swing.JPanel;
     
    import presentation.Mandelbrot.Zone;
     
     
     
    public class CpImageResized extends JPanel {
     
           private Image image;
     
                /**
                 * Les propriètées maxX & maxY
                 * permettent de définir les valeurs max de       
                 * l’image
                 **/
     
                private int maxX=50;
                private int maxY=50;
     
                private int dx;
                private int dy;
     
                //Facteur de réduction de l’image
                private float facteur;
     
                //Booléen permettant de savoir si on est sur l’image
                private boolean over;
     
     
     
                /**
                 * Permet d'afficher une image
                 * au format <b>maxX & maxY<b>
                 * @param image
                 */
     
                public CpImageResized(Image image) {
     
                            this.image=image;
                            this.setPreferredSize(new Dimension(maxX,maxY));
                            repaint();
     
                }
     
                /**
                 * Constructeur
                 * Permet d'afficher une image au format
                 * spécifié par <b>dim<b>
                 * @param image
                 * @param dim
                 */
     
                public CpImageResized(Image image,Dimension dim) {
     
                            this.image=image;
                            this.maxX=dim.width;
                            this.maxY=dim.height;
     
                            this.setPreferredSize(new Dimension(maxX,maxY));
     
                            repaint();
     
     
     
                }
     
     
     
     
     
     
     
     
     
     
     
                /**
                 * On redéfini la méthode paint pour que le composant affiche
                 * une image.
                 **/
     
     
     
                public void paint(Graphics arg0) {
     
                            Graphics2D g = (Graphics2D)arg0;
     
                       /**
                        * Algo permettant de calculer la taille de l’image à afficher.
                        * Ici facteur va permettre de réduire l’image selon des règles de
                        * proportionnalité
                        **/
     
                            float x = image.getWidth(null);
                            float y = image.getHeight(null);
     
                            facteur = 1;
     
     
     
                            if (x>y){
                                       // Le facteur est calculé à partir de x
                                       if (x>maxX){
                                                   facteur=x/maxX;
                                       }
                            }else{
                                       // Le facteur est calculé à partir de y
                                       if (y>maxY){
                                                   facteur=y/maxY;
                                       }
                            }
                            //Permet de déterminer la grandeur de l’image
                            dx  = (int) (x/facteur);
                            dy = (int) (y/facteur);
                            int ty = (maxY/2)-(dy/2);
                            int tx = (maxX/2)-(dx/2);
     
     
     
                            /**
                             * Permet d’afficher l’image passée en paramètre.
                             * Si la sourie est sur l’image, alors on spécifie une couleur
                             * sinon on en sélectionne une autre
                             * avant d’afficher un rectangle autour de l’image
                             *
                             **/
     
                            //g.drawImage(image,tx,ty,dx,dy,this);
                            g.drawImage(image , tx, ty, dx, dy, this ); 
                }
     
     
     
     
     
     
    			public int getDx() {
    				return dx;
    			}
     
    			public void setDx(int dx) {
    				this.dx = dx;
    			}
     
    			public int getDy() {
    				return dy;
    			}
     
    			public void setDy(int dy) {
    				this.dy = dy;
    			}
     
    }
    voila.....

  5. #5
    Invité
    Invité(e)
    Par défaut
    bon je vois que dans ton action tu ne fais pas de :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    this.paintAll(getGraphics());
    ce qui permettrait de rafraichir ta frame.

    vérifie que tes images sont bien chargé.

    Dans ta classe CpImageResized les lignes
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    this.setPreferredSize(new Dimension(maxX,maxY));
    repaint();
    a mon avis ne servent à rien puique tu le fait dans a méthode paint().


    Je rajoute, si je peux me permettre, qu'on n'ajoute pas de javadoc dans le corp d'une méthode. Simple remarque

Discussions similaires

  1. changement dynamique des images en java
    Par touma10 dans le forum Interfaces Graphiques en Java
    Réponses: 10
    Dernier message: 09/06/2010, 17h11
  2. changement dynamique du langage d'une interface swing
    Par jeanfeu dans le forum AWT/Swing
    Réponses: 8
    Dernier message: 06/05/2008, 11h30
  3. Chargement d'image lors d'un changement 'dynamique'
    Par Janitrix dans le forum Général JavaScript
    Réponses: 6
    Dernier message: 28/11/2007, 19h36
  4. [DOM] Changement dynamique de l'image de fond d'une balise <TD>
    Par Delphi-ne dans le forum Général JavaScript
    Réponses: 9
    Dernier message: 03/02/2007, 19h40

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