Afficher une image sur jframe en java

Fermé
sedhiara - 25 mars 2011 à 12:01
sakoba2010 Messages postés 157 Date d'inscription lundi 7 février 2011 Statut Membre Dernière intervention 24 juillet 2013 - 25 mars 2011 à 12:32
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();

}

}
A voir également:

1 réponse

sakoba2010 Messages postés 157 Date d'inscription lundi 7 février 2011 Statut Membre Dernière intervention 24 juillet 2013 15
25 mars 2011 à 12:32
Une image s'affiche sur un Panel et non sur un Frame, je vois que tu as déclaré un objet JPanel mais sans l'utiliser. voici un exemple d'ajout d'image dans un Frame par le biais de JPanel:
http://sakoba.byethost13.com/2011/03/09/java-panel-with-background-image/
0