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

Interfaces Graphiques en Java Discussion :

Ouvrir une image à partir d'un album photo


Sujet :

Interfaces Graphiques en Java

  1. #1
    Nouveau membre du Club
    Homme Profil pro
    Ergonome
    Inscrit en
    Mai 2015
    Messages
    34
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Ergonome

    Informations forums :
    Inscription : Mai 2015
    Messages : 34
    Points : 33
    Points
    33
    Par défaut Ouvrir une image à partir d'un album photo
    Salut à tous.
    Mon but est d'associer 10 photos à des JButton. Quand je clique dessus, la photo s'ouvre en grand sur une nouvelle JDialog à l'aide d'un actionListener. Afin de ne pas répéter 10 fois les mêmes informations, je souhaite faire une boucle for(...) qui parcourt le tableau et qui ouvre la photo grâce au JButton sélectionné. Voici mon code:

    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
     public class AlbumPhoto extends JDialog{
     
    	private JButton image1 = new JButton((new ImageIcon(((new ImageIcon("Images\\montagne.jpg")).getImage()).getScaledInstance(120,120, java.awt.Image.SCALE_SMOOTH))));
    	private JButton image2 = new JButton((new ImageIcon(((new ImageIcon("Images\\newYork.jpg")).getImage()).getScaledInstance(120,120, java.awt.Image.SCALE_SMOOTH))));
     
    	private JButton tableau[] = new JButton[10];
     
    	private JPanel panCenter = new JPanel();
     
    	public AlbumPhoto(){
    		setSize(300,500);
    		setLocationRelativeTo(null);
     
    		panCenter.add(image1).setBounds(10, 10, 120, 120);
    		panCenter.add(image2).setBounds(10, 10, 120, 120);
    		add(panCenter, BorderLayout.CENTER);
     
    		tableau[0]=image1;
    		tableau[1]=image2;
     
    		for(int i=0; i<2; i++){   //i<2 pour le moment car je n'ai que 2 images, après ce sera: i<tableau.length
    			tableau[i].addActionListener(new PhotoAgrandir());
    		}
     
    	}
     
    	class PhotoAgrandir implements ActionListener{
    		public void actionPerformed(ActionEvent event) {
    			for(int i=0; i<tableau.length;i++){
    				if(event.getSource()==tableau[i]){
    					Photo p = new Photo();
    					p.setPanelPhoto ( /* ?????  */);
    					p.setVisible(true);
    				}
    			}
    		}
    	}
     
    	public static void main(String[] args) {
    		AlbumPhoto a = new AlbumPhoto();
    		a.setVisible(true);
    	}
    }
    Et voici où la photo devrait s'afficher en grand:

    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
     
    public class Photo extends JDialog {
     
    	private JPanel panelCenter = new JPanel();
     
    	public Photo(){
    		setSize(300,500);
    		setLocationRelativeTo(null);
     
    		add(panelCenter, BorderLayout.CENTER);
    	}
     
    	public void setPanelPhoto() {
    		//panelCenter.add( /*??*/);
    	}
    }

    Merci !

  2. #2
    Modérateur
    Avatar de joel.drigo
    Homme Profil pro
    Ingénieur R&D - Développeur Java
    Inscrit en
    Septembre 2009
    Messages
    12 430
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieur R&D - Développeur Java
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2009
    Messages : 12 430
    Points : 29 131
    Points
    29 131
    Billets dans le blog
    2
    Par défaut
    Salut,

    Plutôt que de faire une boucle dans actionPerformed, autant passer directement l'image en paramètre ; surtout que tu fais déjà une classe de listener.

    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
    class PhotoAgrandir implements ActionListener {
     
       private final ImageIcon image;
     
       public PhotoAgrandir(ImageIcon image) {
            this.image=image;
       }
     
       public void actionPerformed(ActionEvent e) {
     
            Photo p = new Photo();
            p.setPanelPhoto ( /* ?????  */);
    	p.setVisible(true);
     
       }
     
     
    }
    Maintenant, pour setPanelPhoto(ImageIcon image), tu peux faire :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    public void setPanelPhoto(ImageIcon image) {
         panelCenter.removeAll(); // pour supprimer la précédente photo
         if ( image!=null ) {
            panelCenter.add( new JLabel(image) );  // on ajoute l'imageicon dans un JLabel pour pouvoir l'afficher, seulement si on en a
         }
         panelCenter.revalidate(); // pour forcer le layout à s'adapter 
         panelCenter.repaint(); // pour forcer le redessin
    }

    Ensuite, il vaudrait mieux que tu stockes les images (ou ImageIcon) dans le tableau.

    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
     public class AlbumPhoto extends JDialog{
     
            private final ImageIcon[] images; 
     
    	public AlbumPhoto(){
    		setSize(300,500);
    		setLocationRelativeTo(null);
     
                    images = new ImageIcon[]{
                                   new ImageIcon("Images\\montagne.jpg"), // attention à l'expression des chemins d'accès relatifs...
                                   new ImageIcon("Images\\newYork.jpg")
                                   }
     
     
    	        final JPanel panCenter = new JPanel(new GridLayout(0,2));
                    for(ImageIcon image : images) {
                        JButton button = new JButton( new ImageIcon( image.getImage().getScaledInstance(120,120,java.awt.Image.SCALE_SMOOTH))); // en fait le rescale n'est pas utile avec un GridLayout
                        button.addActionListener( new PhotoAgrandir (image) );
      		    panCenter.add(button);
                    }
     
    	 	 add(panCenter, BorderLayout.CENTER); 
     
    	}
     
     
     /* ... */
    }

  3. #3
    Nouveau membre du Club
    Homme Profil pro
    Ergonome
    Inscrit en
    Mai 2015
    Messages
    34
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Ergonome

    Informations forums :
    Inscription : Mai 2015
    Messages : 34
    Points : 33
    Points
    33
    Par défaut
    Merci beaucoup pour ton aide c'est vraiment super

    A bientôt

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Ouvrir une image à partir d'un PC distant en Java
    Par nassima_1418 dans le forum Débuter avec Java
    Réponses: 4
    Dernier message: 23/09/2013, 11h17
  2. Ouvrir une image à partir d'un menu avec Qt
    Par Aminesrine dans le forum Débuter
    Réponses: 1
    Dernier message: 27/03/2011, 16h59
  3. créer et ouvrir une image à partir d'une servlet
    Par natoine dans le forum Servlets/JSP
    Réponses: 12
    Dernier message: 27/04/2009, 20h39
  4. comment ouvrir une image avec photo editor à partir d'un lien?
    Par eric60 dans le forum Général JavaScript
    Réponses: 1
    Dernier message: 02/04/2008, 10h28
  5. Ouvrir une image avec Photo Editor
    Par malingue dans le forum Access
    Réponses: 1
    Dernier message: 07/07/2006, 17h54

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