Afficher une image sur jframe en java

bonjour,

voilà, je veux afficher une image sur le jframe, dont voici le code que j'ai implementé
et le probl c'est que mon image ne s'affiche pas sur le jframe

import java.awt.Graphics;
import java.awt.Image;
import java.awt.Menu;
import java.awt.MenuBar;
import java.awt.MenuItem;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.image.BufferedImage;
import java.awt.image.ImageObserver;
import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;

import javax.imageio.ImageIO;
import javax.swing.JFileChooser;
import javax.swing.JFrame;
import javax.swing.JPanel;

public class Principale extends JFrame implements ActionListener,ImageObserver{
JPanel pan;
MenuBar bm;
Menu menu1,menu2;
MenuItem
ouvrir,fermer;
MenuItem
niveau_gris,convolution;
String name_file;
File file;

public Principale() {
bm = new MenuBar();
menu1 = new Menu("Fichier");
ouvrir = new MenuItem("ouvrir");
ouvrir.addActionListener(this);
menu1.add(ouvrir);
fermer = new MenuItem("fermer");
fermer.addActionListener(this);
menu1.add(fermer);
bm.add(menu1);
menu2 = new Menu("Elements");
niveau_gris = new MenuItem("niveau de gris");
niveau_gris.addActionListener(this);
menu2.add(niveau_gris);
convolution = new MenuItem("convolution");
convolution.addActionListener(this);
menu2.add(convolution);
bm.add(menu2);
this.setMenuBar(bm);
this.setTitle("manipulation d'image");
this.setSize(600,600);
this.setResizable(false);
this.setAlwaysOnTop(true);
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
this.setLocationRelativeTo(null);
this.setVisible(true);
}

public void actionPerformed(ActionEvent e){
JFileChooser fc = new JFileChooser();
if(e.getSource()== ouvrir){
int retournValeur = fc.showOpenDialog(getComponent(0));
if(retournValeur == JFileChooser.APPROVE_OPTION){
file = fc.getSelectedFile();
name_file =System.getProperty(file.getName());
}
if(e.getSource()==fermer){
System.exit(0);
}
}
}

public BufferedImage ouvertureFichier(String f){
try{
File inputFile = new File(f);
BufferedImage image = ImageIO.read(inputFile);
return image;
}catch(IOException e){
e.printStackTrace();
return null;
}
}

public void paintComponent(Graphics g){
BufferedImage image = ouvertureFichier(name_file);
g.drawImage(image, 0, 0, null);
}

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

}

}

1 réponse