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 :

Afficher une image à partir d'un JFileChooser


Sujet :

AWT/Swing Java

  1. #1
    Membre à l'essai
    Profil pro
    Étudiant
    Inscrit en
    Février 2007
    Messages
    25
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France, Val d'Oise (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2007
    Messages : 25
    Points : 20
    Points
    20
    Par défaut Afficher une image à partir d'un JFileChooser
    Bonjour,

    J'aimerais a partir du repertoire courant, afficher une image dans mon interface graphique.

    C'est à dire que je souhaiterais que mon image s'affiche dans mon interface lorsque je la selectionne et clique sur le bouton ouvrir de mon repertoire courant.

    Voila ce que j'ai déja fait: j'arrive a ouvrir mon repertoire courant quand je clique sur l item ouvrir du menu fichier.

    Svp Help !!!!!!!!

    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
     import java.awt.Graphics;
     
     
     
    import javax.swing.JFrame;
     
     
     
     
     
    public class ChargerImage
     
      {
     
      public static void main(String[] args)
     
        {
                    JFrame frame=new JFrame("Création de panorama");
     
    		frame.setSize(400,300);
     
    		frame.setVisible(true);
     
    		OuvrirFichier of=new OuvrirFichier(frame);
       }
    }
     
     
    //autre classe
     
    import java.awt.Container;
    import java.awt.GridLayout;
    import java.awt.event.ActionEvent;
    import java.awt.event.ActionListener;
    import java.awt.event.WindowListener;
     
    import javax.swing.JFileChooser;
    import javax.swing.JFrame;
    import javax.swing.JMenu;
    import javax.swing.JMenuBar;
    import javax.swing.JMenuItem;
    import javax.swing.JOptionPane;
    import javax.swing.WindowConstants;
     
    import up5.mi.pary.jc.intergraph.GestionnaireFermeture;
     
     
    public class OuvrirFichier  extends JFrame{
     
     
    	public OuvrirFichier(JFrame frame){
                JMenuBar mb=new JMenuBar();
    		JMenu fichier=new JMenu("Fichier");
    		mb.add(fichier);
    		frame.setJMenuBar(mb);
    		JMenuItem ouvrir= new JMenuItem("Ouvrir");
    		JMenuItem quitter = new JMenuItem ("Quitter");
     
     
     
    		fichier.add(ouvrir);
    		fichier.add(quitter);
     
    		ouvrir.addActionListener(new ActionListener(){
    			public void actionPerformed(ActionEvent e){
     
    				JFileChooser hf=new JFileChooser();
    				hf.setCurrentDirectory(new java.io.File("repertoires"));
    				hf.showOpenDialog(null);
    				System.out.println(hf.getSelectedFile());
     
    		    }
    		});
     
    		quitter.addActionListener( new ActionListener (){
    			public void actionPerformed (ActionEvent e){
     
    				Object[] options = {"Oui", "Non"};
    				JFrame frame2=new JFrame("Quitter");
     
    				int n = JOptionPane.showOptionDialog(frame2,
    						"Voulez vous vraiment quitter?",
    						"Quitter",
    						JOptionPane.YES_NO_OPTION,
    						JOptionPane.QUESTION_MESSAGE,
    						null,     
    						options, 
    						options[0]); 
     
    				if( n==JOptionPane.YES_OPTION) {
    					System.exit(0);
    				}
    			}
    		});	 
            }
    }

  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
    Ben t'as fait le plus dur :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    System.out.println(hf.getSelectedFile());
    Image image = ImageIO.read(hf.getSelectedFile());
    JLabel label = new JLabel(new ImageIcon(image));
    maJFrame.getContentPane().add(label);

  3. #3
    Membre à l'essai
    Profil pro
    Étudiant
    Inscrit en
    Février 2007
    Messages
    25
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France, Val d'Oise (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2007
    Messages : 25
    Points : 20
    Points
    20
    Par défaut
    merci, je vais peut etre te paraitre idiote mais je ne sais pas où mettre le bout de code que tu as ecris.
    J'ai changée ça dans ma classe OuvrirFichier mais ça ne marche pas (à cause de frame.getContentPane().add(label) :

    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
    ouvrir.addActionListener(new ActionListener(){
    			public void actionPerformed(ActionEvent e){
     
     
     
    				JFileChooser hf=new JFileChooser();
    				hf.setCurrentDirectory(new java.io.File("repertoires"));
    				hf.showOpenDialog(null);
    				System.out.println(hf.getSelectedFile());
     
    				Image image = ImageIO.read(hf.getSelectedFile());
    				JLabel label = new JLabel(new ImageIcon(image));
    				frame.getContentPane().add(label);
    		    }
    		});

  4. #4
    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
    Ben oui, frame, c'est la fenêtre dans laquelle tu veux afficher l'image (en l'occurrence OuvrirFichier.this). Donc tu peux remplacer frame par OuvrirFichier.this.

  5. #5
    Membre à l'essai
    Profil pro
    Étudiant
    Inscrit en
    Février 2007
    Messages
    25
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France, Val d'Oise (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2007
    Messages : 25
    Points : 20
    Points
    20
    Par défaut
    encore merci pour ta reponse, mais je viens d'essayer et ça ne marche toujours pas il me dit que la méthode getContentPane n'est pas defini pour le type OuvrirFichier

  6. #6
    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
    Un peu de code source ?

  7. #7
    Membre à l'essai
    Profil pro
    Étudiant
    Inscrit en
    Février 2007
    Messages
    25
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France, Val d'Oise (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2007
    Messages : 25
    Points : 20
    Points
    20
    Par défaut
    Un peu de code source ?
    désolé je ne comprend pas ce que tu me demandes!!!

    et sinon j'ai essayé plusieurs choses pour mon code et une des erreurs qui revient souvent est que: la méthode getContentPane n'est pas défini pour le type new ActionListener

  8. #8
    Membre éclairé
    Avatar de sironimo
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    669
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations forums :
    Inscription : Mai 2004
    Messages : 669
    Points : 756
    Points
    756
    Par défaut
    Le messieur te demande de mettre le bout de code qui te pose problème ici dans des balises code de façon à ce qu'on puisse t'aider

  9. #9
    Membre à l'essai
    Profil pro
    Étudiant
    Inscrit en
    Février 2007
    Messages
    25
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France, Val d'Oise (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2007
    Messages : 25
    Points : 20
    Points
    20
    Par défaut
    Citation Envoyé par sironimo
    Le messieur te demande de mettre le bout de code qui te pose problème ici dans des balises code de façon à ce qu'on puisse t'aider

    j'ai deja mis le bout de code qui me pose probleme dans mon deuxieme message. et il me met une erreur sur la méthode getContentPane a la derniere ligne.

  10. #10
    Membre éclairé
    Avatar de sironimo
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    669
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations forums :
    Inscription : Mai 2004
    Messages : 669
    Points : 756
    Points
    756
    Par défaut
    Oui mais tu l'as modifié le code notamment en fisant le getContentPane sur ouvrirFichier.this non ?

    On veut juste voir la dernière mouture de ton code avec cette modification ou s'il y en a d'autres

  11. #11
    Membre à l'essai
    Profil pro
    Étudiant
    Inscrit en
    Février 2007
    Messages
    25
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France, Val d'Oise (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2007
    Messages : 25
    Points : 20
    Points
    20
    Par défaut
    ba en fait j'ai juste modifié en remplaçant le frame par OuvrirFichier.this mais j'ai toujours une erreur. Mon bout de code modifié donne ça :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    ouvrir.addActionListener(new ActionListener(){
    				public void actionPerformed(ActionEvent e){
     
    					JFileChooser hf=new JFileChooser();
    					hf.setCurrentDirectory(new java.io.File("repertoires"));
    					hf.showOpenDialog(null);
    					System.out.println(hf.getSelectedFile());
     
    					Image image = ImageIO.read(hf.getSelectedFile());
    					JLabel label = new JLabel(new ImageIcon(image));
    					OuvrirFichier.this.getContentPane().add(label);
     
    			    }

  12. #12
    Membre à l'essai
    Profil pro
    Étudiant
    Inscrit en
    Février 2007
    Messages
    25
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France, Val d'Oise (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2007
    Messages : 25
    Points : 20
    Points
    20
    Par défaut
    j'ai réussi à enlever l'erreur sur la méthode getContentPane() mais maintenant il me met une erreur sur cette ligne:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Image image = ImageIO.read(hf.getSelectedFile());
    l'erreur qu'il me met est : " Unhanded exception type IOException"

    je comprend pas l'erreur!! svp Help!!!

  13. #13
    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
    Là, il faut juste mettre la ligne entre un try et un catch. Un petit cours (rapide) sur les exceptions s'impose, là (genre google : java exception).

    Quant à l'erreur sur le OuvrirFichier.this, je n'ai pas testé, mais il me semble que ça doit marcher. Enfin le principal c'est que tu aies fait quelque chose qui fonctionne.

  14. #14
    Membre à l'essai
    Profil pro
    Étudiant
    Inscrit en
    Février 2007
    Messages
    25
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France, Val d'Oise (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2007
    Messages : 25
    Points : 20
    Points
    20
    Par défaut
    Je suis allée faire des recherches sur les exceptions mais j'ai pas tres bien compris comment ça marche!
    Si quelqu'un pouvait m'aider parce que j arrive toujours pas à afficher une image dans mon interface graphique, a partir du repertoire courant (mon code est dans mon premier message).
    Merci!

  15. #15
    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
    Bon, essaie de comprendre avant d'utiliser :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    JLabel label;
    try {
      Image image = ImageIO.read(hf.getSelectedFile());
      label = new JLabel(new ImageIcon(image));
    }
    catch(IOException e) {
      // on affiche les détails de l'exception
      e.printStackTrace();
      // on limite la casse
      label = new JLabel("Erreur de lecture de l'image.");
    }
    ...add(label);

  16. #16
    Membre à l'essai
    Profil pro
    Étudiant
    Inscrit en
    Février 2007
    Messages
    25
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France, Val d'Oise (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2007
    Messages : 25
    Points : 20
    Points
    20
    Par défaut
    Re bonjour,
    J'ai toujours un probleme pour afficher une image.
    voici mon code en entier, je n'ai pas d'erreur de compilation mais l'image ne s'affiche toujours pas, j arrive pas a comprendre pourquoi !!???
    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
    220
    221
    222
    223
    224
    225
    226
    227
    228
    229
    230
     
    package ouvrirfichier;
     
     
     
    import java.awt.Graphics;
     
     
     
    import javax.swing.JFrame;
     
     
     
    public class ChargerImage{
     
     
     
        public static void main(String[] args){
     
     
                JFrame fenetre = new JFrame();
     
    	    fenetre.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
     
    	    fenetre.setSize(400,300);
     
    	    fenetre.setVisible(true);
     
    	    fenetre.setTitle("création de panorama");
     
    	   OuvrirFichier of=new OuvrirFichier(fenetre);
     
     
        } 
     
    }
     
    package ouvrirfichier;
     
     
     
    import java.awt.Container;
     
    import java.awt.GridLayout;
     
    import java.awt.Image;
     
    import java.awt.event.ActionEvent;
     
    import java.awt.event.ActionListener;
     
    import java.awt.event.WindowListener;
     
     
     
    import javax.imageio.ImageIO;
     
    import javax.swing.ImageIcon;
     
    import javax.swing.JFileChooser;
     
    import javax.swing.JFrame;
     
    import javax.swing.JLabel;
     
    import javax.swing.JMenu;
     
    import javax.swing.JMenuBar;
     
    import javax.swing.JMenuItem;
     
    import javax.swing.JOptionPane;
     
    import javax.swing.JPanel;
     
    import javax.swing.WindowConstants;
     
     
     
     
     
     
     
     
     
    public class OuvrirFichier extends JFrame {
     
     
     
    	private JFileChooser hf; 
     
     
     
    	public OuvrirFichier(JFrame frame){
                            JMenuBar mb=new JMenuBar();
     
    			JMenu fichier=new JMenu("Fichier");
     
    			mb.add(fichier);
     
    			frame.setJMenuBar(mb);
     
    			JMenuItem ouvrir= new JMenuItem("Ouvrir");
     
    			JMenuItem quitter = new JMenuItem ("Quitter");
     
     
     
     
     
     
     
    			fichier.add(ouvrir);
     
    			fichier.add(quitter);
                            ouvrir.addActionListener(new ActionListener(){
     
    				public void actionPerformed(ActionEvent e){
     
     
     
    					JFileChooser hf=new JFileChooser();
     
    					hf.setCurrentDirectory(new                                             java.io.File("repertoires"));
     
    					hf.showOpenDialog(null);
     
    					System.out.println(hf.getSelectedFile());
     
    					Container leContenant = getContentPane();
     
    				        leContenant.setLayout(new GridLayout(1,2));
                                            AffichageImage image=new    AffichageImage(hf.getSelectedFile().getAbsolutePath());
     
    					leContenant.add(image);
     
     
     
     
     
     
     
     
    			    }
     
    			});
     
     
     
     
    			quitter.addActionListener( new ActionListener (){
     
    				public void actionPerformed (ActionEvent e){
     
     
     
    					Object[] options = {"Oui", "Non"};
     
    					JFrame frame2=new JFrame("Quitter");
     
     
     
    					int n = JOptionPane.showOptionDialog(frame2,
     
    							"Voulez vous vraiment quitter?",
     
    							"Quitter",
     
    							JOptionPane.YES_NO_OPTION,
     
    							JOptionPane.QUESTION_MESSAGE,
     
    							null,     
     
    							options, 
     
    							options[0]); 
     
     
     
    					if( n==JOptionPane.YES_OPTION) {
     
    						System.exit(0);
     
    					}
     
    				}
     
    			});	 
     
     
     
     
    		}
     
     
     
     
    	}
     
    package ouvrirfichier;
     
    import java.awt.Canvas;
    import java.awt.Dimension;
    import java.awt.Graphics;
    import java.awt.Graphics2D;
    import java.awt.Image;
    import java.awt.Toolkit;
     
    public class AffichageImage extends Canvas
    {
    	  Dimension screenSize = Toolkit.getDefaultToolkit().getScreenSize();
    	 // int largeurEcran = screenSize.width;
    	  //int hauteurEcran = screenSize.height;
    	  Image image;
     
    	  public AffichageImage(String url)
    	    {
    	    image = getToolkit().getImage(url);
    	    prepareImage(image, this);
    	    }
     
    	  public void paint(Graphics g)
    	    {
    	    g.drawImage(image, 0, 0,
                    100,
                    100, this);
    	    }
     
    }

    Le probleme vient surement de là:
    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
    ouvrir.addActionListener(new ActionListener(){
     
    				public void actionPerformed(ActionEvent e){
     
     
     
    					JFileChooser hf=new JFileChooser();
     
    					hf.setCurrentDirectory(new java.io.File("repertoires"));
     
    					hf.showOpenDialog(null);
     
    					System.out.println(hf.getSelectedFile());
     
    					Container leContenant = getContentPane();
     
    				    leContenant.setLayout(new GridLayout(1,2));
     
    				    AffichageImage image=new AffichageImage(hf.getSelectedFile().getAbsolutePath());
     
    					leContenant.add(image);
     
     
     
     
     
     
     
    			    }
     
    			});
    Toute idée sera la bienvenue, merci.

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

Discussions similaires

  1. [MySQL] Afficher une image à partir stockée en base de données
    Par arti2004 dans le forum PHP & Base de données
    Réponses: 22
    Dernier message: 21/06/2011, 19h40
  2. afficher une image à partir de son chemin
    Par amiine dans le forum C++Builder
    Réponses: 4
    Dernier message: 20/12/2007, 19h53
  3. Afficher une image à partir d'une base access
    Par inforlab dans le forum VB.NET
    Réponses: 1
    Dernier message: 24/05/2007, 20h06
  4. [VB6][CR 8.5]Afficher une image à partir d'une BD.
    Par WOLO Laurent dans le forum VB 6 et antérieur
    Réponses: 3
    Dernier message: 30/03/2006, 09h33
  5. afficher une image à partir d'une base de données access
    Par zidenne dans le forum Bases de données
    Réponses: 2
    Dernier message: 08/11/2005, 11h41

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