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

AWT/Swing Java Discussion :

[Débutant]Erreur compilation !


Sujet :

AWT/Swing Java

  1. #21
    Membre du Club Avatar de gandalf_le_blanc
    Profil pro
    Inscrit en
    Mars 2004
    Messages
    161
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2004
    Messages : 161
    Points : 47
    Points
    47
    Par défaut
    Si j'etend ImageScreen de BufferedImage, la méthode toBufferedImage ne sert plus à rien dans ce cas là ?

    Et donc ma classe ImageScreen va devenir :
    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
     
    public class ImageScreen extends BufferedImage
    {
      private int mode;
      private TexturePaint texture;
      private BufferedImage bufferedImage;
     
      public static final int CENTRE = 0;
      public static final int TEXTURE = 1;
     
      public ImageScreen(String fileName, int mode )
      {
        this.mode = mode;
     
        Image image = Toolkit.getDefaultToolkit().getImage(fileName);
        image = new ImageIcon(image).getImage();
     
        bufferedImage = new BufferedImage( image.getWidth(null), image.getHeight(null), BufferedImage.TYPE_INT_RGB);
     
        texture = new TexturePaint(bufferedImage,new Rectangle(0, 0, bufferedImage.getWidth(), bufferedImage.getHeight()));
     
        Graphics g = bufferedImage.createGraphics();
        g.setColor(Color.white);
        g.fillRect(0, 0, image.getWidth(null),
                   image.getHeight(null));
        g.drawImage(image, 0, 0, null);
        g.dispose();    
      }
     
    }
    Sauf que j'ai une erreur qui est :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    Impossible de résoudre le symbole : constructeur BufferedImage dans classe java.awt.image.BufferedImage à la ligne 18;
     
    Image() dans java.awt.Image nest pas défini(e) dans une classe ou une interface publique ; accès impossible depuis lextérieur du paquet en ligne 18, colonne 3
    La ligne 18 est :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    17   public ImageScreen(String fileName, int mode )
    18   {
    ET sinon j'a icompris ce que tu m'as dit pour la méthode repaint().
    Mais je ne sais pas où mettre la méthode paintComponent()
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    public void paintComponent(Graphics g) { 
          super.paintComponent(g); 
          g.drawImage(image); 
       }
    Car elle me génère des erreurs obligatoirement
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    impossible de résoudre le symbole : méthode paintComponent (java.awt.Graphics)dans classe javax.swing.JApplet en ligne 1946, colonne 13
     
    impossible de résoudre le symbole : méthode drawImage (java.awt.Image)dans classe java.awt.Graphics en ligne 1947, colonne 9

  2. #22
    Membre régulier
    Profil pro
    Inscrit en
    Août 2004
    Messages
    85
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2004
    Messages : 85
    Points : 102
    Points
    102
    Par défaut
    OKi, bon alors :

    - vu que t'utilises une applet, c'est la méthode paint qu'il faut redéfinir (la méthode paintComponent existe pô pour ce type d'objets).
    - pour le dessin de l'image, c'est parce que la méthode drawImage ne prend pas qu'une image en paramètres, il doit y en avoir d'autres. Regardes du côté de la doc java, ça devrait t'aider.

    Maintenant, en ce qui concerne l'image proprement dite, je comprends pas pourquoi tu crées une classe spéciale vu qu'elle fait rien de particulier. A mon avis, il suffit de récupérer l'image directement dans ta classe principale. Ensuite, pour l'utilisation du buffer, tu dois pouvoir faire un truc du genre (dans la classe qui contient l'image)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    BufferedImage bImage = new BufferedImage(paramètres du bufferedImage);
    Graphics2D g = bImage.createGraphics();
    g.drawImage();
    Ensuite, dans la méthode paint, tu remplaces le drawImage(image, .....) par drawImage(bImage,......).

    Bon, je suis dsl, j'ai pô le temps de tester tout ça , alors je sais pô si ça marche (donc efface pô ton ancien code, des fois où....) et tiens-moi au courant.

  3. #23
    Membre du Club Avatar de gandalf_le_blanc
    Profil pro
    Inscrit en
    Mars 2004
    Messages
    161
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2004
    Messages : 161
    Points : 47
    Points
    47
    Par défaut
    Bon voilà ce que j'ai fait :

    J'ai supprimer ma classe ImageScreen comme tu l'as dit.

    J'ai créé, dans ma classe principale, une méthode :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
     public void CreateImage(String FileName) {
        Image image = Toolkit.getDefaultToolkit().getImage(FileName);
        image = new ImageIcon(image).getImage();
        bImage = new BufferedImage( image.getWidth(null), image.getHeight(null), BufferedImage.TYPE_INT_RGB);
        Graphics2D g = bImage.createGraphics(); 
        g.drawImage(image, 0, 0, null);
      }
     
      public void paint(Graphics g)
      {
          super.paint(g);
          g.drawImage(bImage,(getWidth()-bImage.getWidth())/2,(getHeight()-bImage.getHeight())/2,null);
      }
    Et à l'endroit où je voulais affiché l'image, j'ai fait :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    CreateImage("C:\\Documents and Settings\\Administrateur\\Bureau\\jbproject\\Icones\\let1.jpg");
        p1.repaint();
    Et ça fonctionne nickel à part que l'image est un peu plus grande que je le pensais et qu'elle n'est pas placée ou il faut.

    Mais merci bcq de ta patience et de ton aide.


  4. #24
    Membre régulier
    Profil pro
    Inscrit en
    Août 2004
    Messages
    85
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2004
    Messages : 85
    Points : 102
    Points
    102
    Par défaut
    De rien.

    En ce qui concerne le placement de ton image, vu qu'il dépend de la taille de cette dernière, je pense qu'une fois que tu auras résolu le problème de taille, celui de placement sera OK. Après pour l'histoire de taille, regarde la méthode getScaledInstance pour retailler ton image. Voilà, en tout cas bon courage !

+ Répondre à la discussion
Cette discussion est résolue.
Page 2 sur 2 PremièrePremière 12

Discussions similaires

  1. [Débutant]Erreur compilation classe héritée
    Par Nerziel dans le forum C++
    Réponses: 3
    Dernier message: 02/03/2007, 16h51
  2. Réponses: 15
    Dernier message: 01/11/2005, 14h32
  3. [MASM32][Débutant] Erreur de compilation
    Par Priest dans le forum x86 32-bits / 64-bits
    Réponses: 6
    Dernier message: 02/10/2005, 03h06
  4. Réponses: 12
    Dernier message: 26/08/2005, 11h02
  5. [Débutant]Erreur de compilation inconprehensible
    Par @r$£~%[ dans le forum C++
    Réponses: 15
    Dernier message: 14/08/2005, 21h04

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