[Applet] Problème d'affichage d'images.
Bonjour à tous...
je vous presente mon problème:
j'ai créé une applet qui affiche des boutons, mais aussi des images...
le problème, c'est que j'ai une erreur d'affichage ce qui rend impossible le demarrage de l'applet ds un navigateur WEB... par contre, sous eclipse, sans aucun probleme....
je vous donne donc le code:
le main qui demarre l'applet:
Code:
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
|
import javax.swing.*;
import java.awt.*;
import java.applet.*;
public class main extends Applet {
public static JApplet applet;
public static Image codah;
public static JPanel ecran;
public static JPanel menu;
public static JPanel icone;
public static JPanel menuAccueil;
public static JPanel boutons;
public static JPanel boutonsAccueil;
public static JPanel panneauSupervision;
public static JPanel ecranDroite;
public static JPanel interieurDroite;
/**
* @param args
*/
public static JPanel accueil() {
ecran = new JPanel();
ecran.setLayout(new BorderLayout());
ecran.setPreferredSize(new Dimension(1024,768));
//----------------------------------------
// creation de la barre de menu
menu = new JPanel();
menu.setLayout(new BorderLayout());
menu.setPreferredSize(new Dimension(341,256));
//--------------------------------
// insertion de l'icone de la codah
icone = new JPanel();
icone.setLayout(new BorderLayout());
icone.setLayout(new FlowLayout(FlowLayout.CENTER));
icone.setPreferredSize(new Dimension(341,256));
ImageFond image = new ImageFond("CODAH.GIF", new Dimension(160,160)); // le probleme arrive ici...
icone.add(image.afficher());
// icone créée
// -------------------------------
// creation des boutons
boutons = new JPanel();
boutons.setLayout(new BorderLayout());
boutons.setPreferredSize(new Dimension(341,512));
//----------------------------
//creation des boutons d'accueil
boutonsAccueil = new JPanel();
boutonsAccueil.setLayout(new BorderLayout());
boutonsAccueil.setLayout(new FlowLayout(FlowLayout.CENTER));
boutonsAccueil.setPreferredSize(new Dimension(113,512));
barreAccueil barreAccueil = new barreAccueil();
boutonsAccueil.add(barreAccueil.activer(),BorderLayout.WEST);
//boutons d'accueil créés
//----------------------------
//creation du panneau accueillant la supervision
panneauSupervision = new JPanel();
panneauSupervision.setLayout(new BorderLayout());
panneauSupervision.setPreferredSize(new Dimension(227,512));
//panneau créé
//----------------------------
boutons.add(boutonsAccueil,BorderLayout.WEST);
boutons.add(panneauSupervision,BorderLayout.EAST);
// boutons créées
//--------------------------------
menu.add(icone,BorderLayout.NORTH);
menu.add(boutons,BorderLayout.SOUTH);
// barre de menu créée
//------------------------------------------
// creation du panneau secondaire
ecranDroite = new JPanel();
ecranDroite.setLayout(new BorderLayout());
ecranDroite.setPreferredSize(new Dimension(683,768));
ecranDroite.setLayout(new FlowLayout(FlowLayout.CENTER));
//--------------------------------------
// creation du panel comportant les images centrées
interieurDroite = new JPanel();
interieurDroite.setLayout(new BorderLayout());
interieurDroite.setPreferredSize(new Dimension(583,648));
// panel comportant les images créé
//--------------------------------------
ecranDroite.add(interieurDroite);
// ecran de droite créé
//------------------------------------------
ecran.add(menu,BorderLayout.WEST);
ecran.add(ecranDroite,BorderLayout.EAST);
return ecran;
}
public void init(){
applet = new JApplet();
applet.add(accueil());
add(applet);
}
} |
et voici le code ou ca pose probleme, mais je ne vois pas l'erreur:
Code:
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
| import java.awt.Container;
import java.awt.Dimension;
import java.awt.Graphics;
import java.awt.image.BufferedImage;
import java.io.File;
import java.io.IOException;
import javax.imageio.ImageIO;
import javax.swing.JFrame;
import javax.swing.JPanel;
public class ImageFond extends JFrame {
private static final long serialVersionUID = 1L;
private Container c;
private JPanel imagePanel;
private String filePath;
private Dimension dimension;
private Graphics g;
/**
* recupere l'image que l'on veut utiliser
* @param filePath : image a utiliser
* @param dimension : dimension de l'image desirée
*/
public ImageFond(String filePath, Dimension dimension) {
super("ImageFond");
this.filePath = filePath;
this.dimension = dimension;
initialize();
}
/**
* methode privée qui initialise l'image et la met dans un conteneur
*/
private void initialize() {
setDefaultCloseOperation(EXIT_ON_CLOSE);
c = getContentPane();
imagePanel = new JPanel(){
private static final long serialVersionUID = 1L;
public void paint(Graphics g){
try {
BufferedImage image = ImageIO.read(new File(filePath));
if (image == null) return;
int w = image.getWidth(this);
int h = image.getHeight(this);
boolean zoom = (w > getWidth() || h > getHeight());
if (zoom) g.drawImage(image, 0, 0, getWidth(), getHeight(), this);
else g.drawImage(image, (getWidth()-w)/2, (getHeight()-h)/2, this);
}
catch (IOException e){
e.printStackTrace();
}
}
};
imagePanel.setPreferredSize(this.dimension);
c.add(imagePanel);
}
/**
* retourne un conteneur contenant l'image
* @return : conteneur a ajouter dans un composant qui contient l'image
*/
public Container afficher() {
return c;
}
} |
je ne sais donc pas quoi faire, car l'erreur de la console java n'est pas "explicite":
Citation:
Citation:
java.lang.NullPointerException
at ImageFond.initialize(ImageFond.java:57)
at ImageFond.<init>(ImageFond.java:31)
at main.acceuil(main.java:41)
at main.init(main.java:113)
at sun.applet.AppletPanel.run(Unknown Source)
at java.lang.Thread.run(Unknown Source)
Exception in thread "thread applet-main.class" java.lang.NullPointerException
at sun.plugin.util.GrayBoxPainter.showLoadingError(Unknown Source)
at sun.plugin.AppletViewer.showAppletException(Unknown Source)
at sun.applet.AppletPanel.run(Unknown Source)
at java.lang.Thread.run(Unknown Source)