Je veux ouvrir une image en java et l'afficher.

Fermé
andresgc12 Messages postés 3 Date d'inscription jeudi 19 janvier 2023 Statut Membre Dernière intervention 28 janvier 2023 - Modifié le 20 janv. 2023 à 17:59
andresgc12 Messages postés 3 Date d'inscription jeudi 19 janvier 2023 Statut Membre Dernière intervention 28 janvier 2023 - 28 janv. 2023 à 20:13

Bonjour,

Je veux ouvrir une image en java et l'afficher.

comment ouvrir une image après l'avoir sélectionnée? 
Voici mon code: 

import java.awt.Desktop;
import java.awt.GridLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.image.BufferedImage;
import java.io.BufferedReader;
import java.io.File;
import java.io.FileFilter;
import java.io.FileReader;
import java.io.IOException;

import javax.imageio.ImageIO;
import javax.swing.JButton;
import javax.swing.JFileChooser;
import javax.swing.JFrame;
import javax.swing.JMenu;
import javax.swing.JMenuBar;
import javax.swing.JMenuItem;
import javax.swing.JPanel;
import javax.swing.filechooser.FileNameExtensionFilter;

public class Fenêtre  extends JFrame implements ActionListener {
    
    public Fenêtre() {
        super("fENETRE");
        setSize(300,200);
        pack();
        setVisible(true);
        {
            JFrame frame = new JFrame("Hello World");
            JPanel panel = new JPanel();
            BufferedImage image = null;

            // Définir le menu principal
            JMenuBar menu = new JMenuBar();
            JMenu file = new JMenu("Fichir");
            JMenu edit = new JMenu("Edition");
            JMenu help = new JMenu("Aide");
             
            // Définir le sous-menu pour Fichier
            JMenuItem newf = new JMenuItem("Nouveau");
            JMenuItem ouvrir = new JMenuItem("Ouvrir");
              ouvrir.addActionListener(new ActionListener() {
                  
                  public void actionPerformed(ActionEvent e) {
                      File[] selectedFiles = null;

                      JFileChooser chooser = new JFileChooser(".");
                      chooser.showOpenDialog(null);
                      chooser.setCurrentDirectory(new File("."));
                      chooser.setMultiSelectionEnabled(true);
                      int option = chooser.showOpenDialog(null);

                      if (option == JFileChooser.APPROVE_OPTION) 
                          selectedFiles = chooser.getSelectedFiles();
                      
                      try {
                        BufferedImage imagenAbrir = ImageIO.read(chooser.getSelectedFile());
                    } catch (IOException e1) {
                        // TODO Auto-generated catch block
                        e1.printStackTrace();
                    }
  
                      
}}
               );


              

                
            JMenuItem save = new JMenuItem("Enregistrer");

            file.add(newf);
            file.add(save);
            file.add(ouvrir);
             
            menu.add(file);
            menu.add(edit);
            menu.add(help);
             
            frame.setLayout(new GridLayout(5, 1));

            frame.add(menu);
            frame.add(panel);
            frame.pack();
            frame.setSize(300, 200);
            frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
            frame.setVisible(true);
            
        
        
        }


    }
    
    public static void main(String[] args) { 
        new Fenêtre();    
    }

    public void actionPerformed(ActionEvent e) {
        System.out.print("test");    
    }
}
A voir également:

3 réponses

KX Messages postés 16734 Date d'inscription samedi 31 mai 2008 Statut Modérateur Dernière intervention 24 avril 2024 3 015
20 janv. 2023 à 18:36

Bonjour,

J'ai adapté ton code pour lire et afficher une image, j'en ai profité pour corriger quelques bugs :

package ccm.kx;

import javax.imageio.ImageIO;
import javax.swing.*;
import java.awt.*;
import java.io.File;
import java.io.IOException;

public class Fenetre {

    public Fenetre() {
        JFrame frame = new JFrame("Hello World");

        // Définir le menu principal
        JMenuBar menu = new JMenuBar();
        JMenu file = new JMenu("Fichir");
        JMenu edit = new JMenu("Edition");
        JMenu help = new JMenu("Aide");

        // Définir le sous-menu pour Fichier
        JMenuItem newf = new JMenuItem("Nouveau");
        JMenuItem ouvrir = new JMenuItem("Ouvrir");

        JFileChooser chooser = new JFileChooser(".");

        Component imageComponent = new Component() {
            @Override
            public void paint(Graphics g) {
                super.paint(g);
                try {
                    File selectedFile = chooser.getSelectedFile();
                    if (selectedFile != null && selectedFile.exists()) {
                        Image image = ImageIO.read(selectedFile);
                        setSize(image.getWidth(this), image.getHeight(this));
                        g.drawImage(image, 0, 0, this);
                    }
                } catch (IOException e1) {
                    e1.printStackTrace();
                }
            }
        };

        ouvrir.addActionListener(e -> {
            chooser.setCurrentDirectory(new File("."));
            int option = chooser.showOpenDialog(null);
            if (option == JFileChooser.APPROVE_OPTION) {
                imageComponent.repaint();
            }
        });

        JPanel panel = new JPanel();
        panel.setLayout(new BorderLayout());
        panel.add(imageComponent, BorderLayout.CENTER);

        JMenuItem save = new JMenuItem("Enregistrer");

        file.add(newf);
        file.add(save);
        file.add(ouvrir);

        menu.add(file);
        menu.add(edit);
        menu.add(help);

        frame.add(menu, BorderLayout.NORTH);
        frame.add(panel, BorderLayout.CENTER);
        frame.setSize(600, 600);

        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        frame.setVisible(true);
    }

    public static void main(String[] args) {
        new Fenetre();
    }
}

0
andresgc12 Messages postés 3 Date d'inscription jeudi 19 janvier 2023 Statut Membre Dernière intervention 28 janvier 2023
20 janv. 2023 à 20:10

Bonjour, merci de ta réponse. En fait, il y a des erreurs quand j'ai copié ton code, mais j'ai corriger les erreurs, sauf que ça fonctionne pas. Voici mon code: 

import java.awt.Component;
import java.awt.Desktop;
import java.awt.Graphics;
import java.awt.GridLayout;
import java.awt.Image;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.image.BufferedImage;
import java.io.BufferedReader;
import java.io.File;
import java.io.FileFilter;
import java.io.FileReader;
import java.io.IOException;

import javax.imageio.ImageIO;
import javax.swing.JButton;
import javax.swing.JFileChooser;
import javax.swing.JFrame;
import javax.swing.JMenu;
import javax.swing.JMenuBar;
import javax.swing.JMenuItem;
import javax.swing.JPanel;
import javax.swing.filechooser.FileNameExtensionFilter;

public class Fenêtre  extends JFrame implements ActionListener {
    
    public Fenêtre() {
        super("fENETRE");
        setSize(300,200);
        pack();
        setVisible(true);
        {
            JFrame frame = new JFrame("Hello World");
            JPanel panel = new JPanel();
            BufferedImage image = null;

            // Définir le menu principal
            JMenuBar menu = new JMenuBar();
            JMenu file = new JMenu("Fichir");
            JMenu edit = new JMenu("Edition");
            JMenu help = new JMenu("Aide");
             
            // Définir le sous-menu pour Fichier
            JMenuItem newf = new JMenuItem("Nouveau");
            JMenuItem ouvrir = new JMenuItem("Ouvrir");

            final Component imageComponent = new Component() {
                
                public void paint(Graphics g) {
                    super.paint(g);
                    try {
                        JFileChooser chooser = new JFileChooser(".");
                        File selectedFile = chooser.getSelectedFile();
                        if (selectedFile != null && selectedFile.exists()) {
                            Image image = ImageIO.read(selectedFile);
                            setSize(image.getWidth(this), image.getHeight(this));
                            g.drawImage(image, 0, 0, this);
                        }
                    } catch (IOException e1) {
                        e1.printStackTrace();
                    }
                }
            };
              ouvrir.addActionListener(new ActionListener() {
                  
                  public void actionPerformed(ActionEvent e) {
                      File[] selectedFiles = null;

                      JFileChooser chooser = new JFileChooser(".");
                      chooser.showOpenDialog(null);
                      
                      chooser.setCurrentDirectory(new File("."));
                      int option = chooser.showOpenDialog(null);
                      if (option == JFileChooser.APPROVE_OPTION) {
                          imageComponent.repaint();
                      }

}}
               );


              

                
            JMenuItem save = new JMenuItem("Enregistrer");

            file.add(newf);
            file.add(save);
            file.add(ouvrir);
             
            menu.add(file);
            menu.add(edit);
            menu.add(help);
             
            frame.setLayout(new GridLayout(5, 1));

            frame.add(menu);
            frame.add(panel);
            frame.pack();
            frame.setSize(300, 200);
            frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
            frame.setVisible(true);
            
        
        
        }


}
    
public static void main(String[] args) { 
new Fenêtre();    
}


}
 

0
KX Messages postés 16734 Date d'inscription samedi 31 mai 2008 Statut Modérateur Dernière intervention 24 avril 2024 3 015
21 janv. 2023 à 07:53

 En fait, il y a des erreurs quand j'ai copié ton code, mais j'ai corriger les erreurs, sauf que ça fonctionne pas. 

Mon code fonctionne, je l'ai testé, si tu as des erreurs il faudrait savoir lesquelles (tu utilises une ancienne version de Java peut être ?)

Si tu "corriges" les erreurs (d'un programme qui fonctionne...) et que tu as toujours des erreurs, c'est que c'est mal corrigé.

0
andresgc12 Messages postés 3 Date d'inscription jeudi 19 janvier 2023 Statut Membre Dernière intervention 28 janvier 2023
28 janv. 2023 à 20:13

Merci,. Le prolblème était la version de java

0