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 :

Probleme avec BufferedImage


Sujet :

AWT/Swing Java

  1. #1
    Membre régulier
    Inscrit en
    Juillet 2006
    Messages
    209
    Détails du profil
    Informations forums :
    Inscription : Juillet 2006
    Messages : 209
    Points : 101
    Points
    101
    Par défaut Probleme avec BufferedImage
    je veux enregister un JPanel sous forme d'une image j'ai trouvé dans les archive du forum un code pour ça mais il me génére l'exception suivante
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Exception in thread "AWT-EventQueue-0" java.lang.IllegalArgumentException: Width (0) and height (0) must be > 0
    alors que si j'imprime directement le JPanel sans l'enregister il marche sans problème
    alors? de quoi peut provenir l'erreur?

  2. #2
    Membre chevronné
    Avatar de afrikha
    Profil pro
    Étudiant
    Inscrit en
    Août 2005
    Messages
    1 600
    Détails du profil
    Informations personnelles :
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Août 2005
    Messages : 1 600
    Points : 2 208
    Points
    2 208
    Par défaut
    Salut,

    Le message d'erreur est clair pourtant...
    Dans width et height tu dois mettre des valeurs non nulles. Typiquement tu mets les dimensions de l'image, longueur et largeur.


    Mes publications
    Lisez
    Les régles du forum
    Pensez au bouton

  3. #3
    Membre régulier
    Inscrit en
    Juillet 2006
    Messages
    209
    Détails du profil
    Informations forums :
    Inscription : Juillet 2006
    Messages : 209
    Points : 101
    Points
    101
    Par défaut
    ça je le sais et c'est pour ça que j'ai précisé que le Panel n'a pas des dimensions nulles vu que je l'imprime
    et c'est pour ça que je cherche de l'aide parce que le message est clair mais pas normal

  4. #4
    Membre chevronné
    Avatar de afrikha
    Profil pro
    Étudiant
    Inscrit en
    Août 2005
    Messages
    1 600
    Détails du profil
    Informations personnelles :
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Août 2005
    Messages : 1 600
    Points : 2 208
    Points
    2 208
    Par défaut
    (bon afrikha ne t'énérve pas )

    Qu'est-ce que tu veux dire par "enregistrer le panel" ?
    Peux-tu poster le code qui pose problème ?


    Mes publications
    Lisez
    Les régles du forum
    Pensez au bouton

  5. #5
    Membre émérite
    Avatar de xavlours
    Inscrit en
    Février 2004
    Messages
    1 832
    Détails du profil
    Informations forums :
    Inscription : Février 2004
    Messages : 1 832
    Points : 2 410
    Points
    2 410
    Par défaut
    Je pense que c'est parce que le panel n'a pas encore subi le layout. Ses dimensions sont donc de 0, 0.

    Il faut avant de faire ça que tu appelles validate() sur ton panel. Ca forcera le layout et lui affectera une taille.
    "Le bon ni le mauvais ne me feraient de peine si si si je savais que j'en aurais l'étrenne." B.V.
    Non au langage SMS ! Je ne répondrai pas aux questions techniques par MP.
    Eclipse : News, FAQ, Cours, Livres, Blogs.Et moi.

  6. #6
    Membre régulier
    Inscrit en
    Juillet 2006
    Messages
    209
    Détails du profil
    Informations forums :
    Inscription : Juillet 2006
    Messages : 209
    Points : 101
    Points
    101
    Par défaut
    j'ai essayé avec validate mais ça marche pas non plus. l'erreur proviens de cette ligne de code:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    BufferedImage bi = new BufferedImage(((JPanel)this.getContentPane()).getWidth(),((JPanel)this.getContentPane()).getHeight(),BufferedImage.TYPE_3BYTE_BGR);
    this est la frame sur laquelle je travail

  7. #7
    Membre émérite
    Avatar de xavlours
    Inscrit en
    Février 2004
    Messages
    1 832
    Détails du profil
    Informations forums :
    Inscription : Février 2004
    Messages : 1 832
    Points : 2 410
    Points
    2 410
    Par défaut
    As-tu essayé d'appeler this.pack() ?
    "Le bon ni le mauvais ne me feraient de peine si si si je savais que j'en aurais l'étrenne." B.V.
    Non au langage SMS ! Je ne répondrai pas aux questions techniques par MP.
    Eclipse : News, FAQ, Cours, Livres, Blogs.Et moi.

  8. #8
    Membre régulier
    Inscrit en
    Juillet 2006
    Messages
    209
    Détails du profil
    Informations forums :
    Inscription : Juillet 2006
    Messages : 209
    Points : 101
    Points
    101
    Par défaut
    oui j'ai changé un petit peu le code maintenant ça marche mais l'image enregistré un carré noir!!!!!
    c'est dû à quoi?

  9. #9
    Gfx
    Gfx est déconnecté
    Expert éminent
    Avatar de Gfx
    Inscrit en
    Mai 2005
    Messages
    1 770
    Détails du profil
    Informations personnelles :
    Âge : 41

    Informations forums :
    Inscription : Mai 2005
    Messages : 1 770
    Points : 8 178
    Points
    8 178
    Par défaut
    Comment dessines-tu dedans ? Pourquoi as-tu choisi le type 3BYTE_BGR ?
    Romain Guy
    Android - Mon livre - Mon blog

  10. #10
    Membre régulier
    Inscrit en
    Juillet 2006
    Messages
    209
    Détails du profil
    Informations forums :
    Inscription : Juillet 2006
    Messages : 209
    Points : 101
    Points
    101
    Par défaut
    pour le dessin j'ai plusieurs label formant un escalier et mon programme fait des calculs pour mettre du text dans les labels suivant certains critéres
    pour le type moi j'y connais rien j'ai choisi au pif mais j'ai essayé de changer mais j'ai pas vu de différence dans le résultat

  11. #11
    Gfx
    Gfx est déconnecté
    Expert éminent
    Avatar de Gfx
    Inscrit en
    Mai 2005
    Messages
    1 770
    Détails du profil
    Informations personnelles :
    Âge : 41

    Informations forums :
    Inscription : Mai 2005
    Messages : 1 770
    Points : 8 178
    Points
    8 178
    Par défaut
    Montre-nous le code de ton dessin.
    Romain Guy
    Android - Mon livre - Mon blog

  12. #12
    Membre régulier
    Inscrit en
    Juillet 2006
    Messages
    209
    Détails du profil
    Informations forums :
    Inscription : Juillet 2006
    Messages : 209
    Points : 101
    Points
    101
    Par défaut
    voila le code:
    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
    import java.lang.*;
    import javax.swing.*;
    import java.awt.print.*;
    import java.awt.image.*;
    import java.io.File;
    import java.io.*;
    import java.text.*;
    import java.awt.Graphics2D;
    import javax.imageio.ImageIO;
    import javax.print.*;
    import javax.print.attribute.*;
    import java.io.IOException;
    import org.xml.sax.*;
    import org.xml.sax.helpers.*;
    import javax.xml.parsers.SAXParserFactory;
    import javax.xml.parsers.SAXParser; 
    /**
     *
     * @author  roussel
     */
    public class Escalier extends JInternalFrame {
        ParsingC parseurC = new ParsingC ();
        String nom_courbe = new String();
        /** Creates new form Escalier */
        public Escalier(String[] nom, Number[] actuel, Number[] diff, String nom_p,String nomA) {
            this.setTitle(nom_p);
            String[] contenu = new String[15];
            initComponents();
            jLabel28.setText(nom_p);
            for (int i = 0; i<15; i++)
                contenu[i]="";
            for (int i =0; i<diff.length;i++)
            {
                if (diff[i].intValue()==0)
                {
                 if (actuel[i].intValue()== 1) contenu[0]+= " "+nom[i]+"\n";
                 if (actuel[i].intValue()==2) contenu[1]+= " "+nom[i]+"\n";
                 if (actuel[i].intValue()==3) contenu[2]+= " "+nom[i]+"\n";
                 if(actuel[i].intValue()==4) contenu[3]+= " "+nom[i]+"\n";
                 if (actuel[i].intValue()==5) contenu[4]+= " "+nom[i]+"\n";
                 }
                 if (diff[i].intValue()==1)
                { 
                     if (actuel[i].intValue()==1) contenu[5]+= " "+nom[i]+"\n";
                     if (actuel[i].intValue()==2) contenu[6]+= " "+nom[i]+"\n";
                     if (actuel[i].intValue()==3) contenu[7]+= " "+nom[i]+"\n";
                     if(actuel[i].intValue()==4)  contenu[8]+= " "+nom[i]+"\n";                 
                 }
                  if (diff[i].intValue()== 2)
                    {
                     if (actuel[i].intValue()==1) contenu[9] += " "+nom[i]+"\n";
                     if (actuel[i].intValue()==2) contenu[10] += " "+nom[i]+"\n";
                     if (actuel[i].intValue()==3) contenu[11] += " "+nom[i]+"\n";       
                    }
                  if (diff[i].intValue()== 3)  
                    {
                       if(actuel[i].intValue()==1) contenu[12] += " "+nom[i]+"\n"; 
                       if (actuel[i].intValue()==2) contenu[13] += " "+nom[i]+"\n";
                    }
                  if (diff[i].intValue()== 4)
                    {
     
                       if(actuel[i].intValue()==1) contenu[14] += " "+nom[i]+"\n";
                    }
                }
            jLabel23.setText(contenu[0]);
            jLabel19.setText(contenu[1]);
            jLabel16.setText(contenu[2]);
            jLabel14.setText(contenu[3]);
            jLabel13.setText(contenu[4]);
            jLabel24.setText(contenu[5]);
            jLabel20.setText(contenu[6]);
            jLabel17.setText(contenu[7]);
            jLabel15.setText(contenu[8]); 
            jLabel25.setText(contenu[9]);
            jLabel21.setText(contenu[10]);
            jLabel18.setText(contenu[11]); 
            jLabel26.setText(contenu[12]);
            jLabel22.setText(contenu[13]);
            jLabel27.setText(contenu[14]);
           this.pack();
           this.validate();
           SAXParserFactory factoryC = SAXParserFactory.newInstance();
            try {
                SAXParser saxParserC = factoryC.newSAXParser();
                saxParserC.parse("C:/Program Files/CityShare Assistant/config.xml",parseurC);
                 }catch (Throwable t){
                     t.printStackTrace();
                 }
           BufferedImage bi = new BufferedImage(this.getWidth(),this.getHeight(),BufferedImage.TYPE_INT_RGB);
          ((JPanel)this.getContentPane()).paint(bi.getGraphics());
          File file1 = new File(parseurC.liste()[1]+"/"+nomA+"/"+nom_p+".png");
          nom_courbe = file1.getPath();
          try {
    	ImageIO.write(bi, "png",file1);
          } catch (IOException ex) {
    	ex.printStackTrace();
          }
        }
    }

Discussions similaires

  1. Probleme avec BufferedImage
    Par Slayor dans le forum Débuter
    Réponses: 7
    Dernier message: 09/10/2008, 00h43
  2. probleme avec BufferedImage
    Par L4BiN dans le forum AWT/Swing
    Réponses: 2
    Dernier message: 30/08/2006, 11h38
  3. probleme avec la touche F10
    Par b.grellee dans le forum Langage
    Réponses: 2
    Dernier message: 15/09/2002, 22h04
  4. Probleme avec fseek
    Par Bjorn dans le forum C
    Réponses: 5
    Dernier message: 04/08/2002, 07h17
  5. [Kylix] probleme avec un imagelist
    Par NicoLinux dans le forum EDI
    Réponses: 4
    Dernier message: 08/06/2002, 23h06

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