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

Interfaces Graphiques en Java Discussion :

[Applet] Problème d'affichage d'images.


Sujet :

Interfaces Graphiques en Java

  1. #1
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    47
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 47
    Points : 29
    Points
    29
    Par défaut [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 : 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
    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 : 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
    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":

    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)

  2. #2
    Membre éclairé Avatar de sozie9372
    Inscrit en
    Mai 2005
    Messages
    713
    Détails du profil
    Informations personnelles :
    Âge : 41

    Informations forums :
    Inscription : Mai 2005
    Messages : 713
    Points : 724
    Points
    724
    Par défaut
    apparement il ne trouve pas ton image... Il n'y a rien d'autre
    "Il y a 3 personnes en ce monde sur qui tu peux compter : moi, le pape et le cavalier solitaire ! "
    Penser à svp

  3. #3
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    47
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 47
    Points : 29
    Points
    29
    Par défaut
    arf, pourtant, mon image est bien ds le repertoire source...

    et sous eclipse, il la trouve bien..

    quand j'essaye ds le navigateur internet, je lance mon index.html qui se trouve ds le repertoire de mon projet en local...

  4. #4
    Membre habitué
    Profil pro
    Inscrit en
    Janvier 2004
    Messages
    145
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2004
    Messages : 145
    Points : 179
    Points
    179
    Par défaut
    Essaie de savoir où se trouve le répertoire courant "."
    Normalement, pour un serveur Web, ça ne sera pas là où se trouve ton applet...

    L'idéal étant de mettre ton image dans le jar à côté de ta classe. Puis d'utiliser TaClass.getRessource() pour récupérer l'URL de ton image et donc pour créer ton File

  5. #5
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    47
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 47
    Points : 29
    Points
    29
    Par défaut
    bon, alors, j'ai essayé avec la methode getRessource(). il ne me donne plus la meme erreur, c'est a dire, ne pas trouver l'image.

    voici le nouveau code pour l'acquisition d'image:

    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
    private void initialize() {
    		setDefaultCloseOperation(EXIT_ON_CLOSE);
    		c = getContentPane();
    		imagePanel = new JPanel(){
    			public void paint(Graphics g){
    				try {
    					BufferedImage image = ImageIO.read(new File(getClass().getResource(filePath).getFile()));
    					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);
    	}
    par contre, il me met une erreur de securité maintenant:

    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
    java.security.AccessControlException: access denied (java.lang.RuntimePermission exitVM)
    	at java.security.AccessControlContext.checkPermission(Unknown Source)
    	at java.security.AccessController.checkPermission(Unknown Source)
    	at java.lang.SecurityManager.checkPermission(Unknown Source)
    	at java.lang.SecurityManager.checkExit(Unknown Source)
    	at javax.swing.JFrame.setDefaultCloseOperation(Unknown Source)
    	at ImageFond.initialize(ImageFond.java:37)
    	at ImageFond.<init>(ImageFond.java:30)
    	at main.accueil(main.java:42)
    	at main.init(main.java:114)
    	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)

    et la, je ne sais pas comment resoudre cette erreur...

  6. #6
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    47
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 47
    Points : 29
    Points
    29
    Par défaut
    bon, en fait, j'ai resolu cette erreur en signant mon applet...

    par contre, maintenant, je demarre mon fichier index.html, il me demande si j'accepte le certificat... je repond oui...

    et la, j'obtiens une page blanche, sans mon applet, et il y a marqué en bas: "applet main started"...

    sauriez vous d'ou cela peut venir ?

    merci

Discussions similaires

  1. Problème d'affichage d'image...
    Par fabreizhad dans le forum Général JavaScript
    Réponses: 10
    Dernier message: 21/03/2006, 12h43
  2. problème d'affichage d'image avec mozilla
    Par lyon31 dans le forum Balisage (X)HTML et validation W3C
    Réponses: 3
    Dernier message: 16/03/2006, 16h27
  3. [Applet] problèmes d'accès aux images
    Par wwave dans le forum Interfaces Graphiques en Java
    Réponses: 18
    Dernier message: 16/09/2005, 14h42
  4. Problème d'affichage d'image
    Par AurelBUD dans le forum Général JavaScript
    Réponses: 5
    Dernier message: 16/09/2005, 11h56
  5. CSS Probléme d'affichage d'images
    Par tebonb dans le forum Mise en page CSS
    Réponses: 2
    Dernier message: 01/06/2005, 18h35

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