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 :

HELP ! insérer Image dans le main ?


Sujet :

AWT/Swing Java

  1. #1
    Membre confirmé
    Inscrit en
    Février 2007
    Messages
    162
    Détails du profil
    Informations forums :
    Inscription : Février 2007
    Messages : 162
    Par défaut HELP ! insérer Image dans le main ?
    Voila mon problème : j'aimerais afficher une image dans mon JXimagepanel dans la fonction main....

    Voila mon 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
    public static void main(String args[]) {
            java.awt.EventQueue.invokeLater(new Runnable() {
                public void run() {
     
                // récupération de l'image que l'on applique au panel
                affiche = new org.jdesktop.swingx.JXImagePanel();
                try {
                    java.awt.Image image = ImageIO.read(getClass().getResource("affiches/PIC1.JPG"));
                    affiche.setImage(image);
                    } catch (java.io.IOException ex) {
                } 
     
                }
            });
    private org.jdesktop.swingx.JXImagePanel affiche;
    Le problème c'est que "affiche.setImage(image);" me renvoie l'erreure : "non-static method setEnabled cannot be referenced in a static context"

    Si j'enlève static à "public static void main(String args[]) {" la compilation me dit qu'elle n'arrive pas a trouver la méthode main...

    Comment faire donc ?

    Merci d'avance....

    Au passage, je n'arrive pas a trouver sur le web français une expilication sur ce "static"... A quoi ça sert ???



    PS : je travail avec Matisse ...
    PS2 : si vous connaissez la méthode pour "étirer" "centrer" l'image je suis preneur (mon image est plus grande que mon jximagepanel mais j'aimerais que l'image soit réduite pour qu'elle soit juste à la taille du jximagepanel)

    EDIT : pour mon PS2 j'ai trouvé la solution :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    affiche.setStyle(JXImagePanel.Style.SCALED);

  2. #2
    Membre habitué
    Inscrit en
    Mars 2007
    Messages
    14
    Détails du profil
    Informations forums :
    Inscription : Mars 2007
    Messages : 14
    Par défaut
    Tu dois d'abord creer une instance de ta classe avant de pouvoir utiliser ses variables membres.

    Ton code deviendrais donc quelquechose du genre:

    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
     
    public static void main(String args[]) {
            java.awt.EventQueue.invokeLater(new Runnable() {
                public void run() {
                MaClasse maClasse = new MaClasse();
                // récupération de l'image que l'on applique au panel
                maClasse.setAffiche(new org.jdesktop.swingx.JXImagePanel());
                try {
                    java.awt.Image image = ImageIO.read(getClass().getResource("affiches/PIC1.JPG"));
                    maClasse.getAffiche().setImage(image);
                    } catch (java.io.IOException ex) {
                } 
     
                }
            });
    private org.jdesktop.swingx.JXImagePanel affiche;
     
    public void setAffiche( org.jdesktop.swingx.JXImagePanel panel) {
     affiche = panel;
    }
    public org.jdesktop.swingx.JXImagePanel getAffiche() {
     return affiche;
    }

  3. #3
    Membre confirmé
    Inscrit en
    Février 2007
    Messages
    162
    Détails du profil
    Informations forums :
    Inscription : Février 2007
    Messages : 162
    Par défaut
    Voila ce que j'ai fais selon ton plan :

    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
       public static void main(String args[]) {
            java.awt.EventQueue.invokeLater(new Runnable() {
                public void run() {
     
                new frame_accueil().setVisible(true);
     
                frame_accueil test = new frame_accueil();
                test.setAffiche(new org.jdesktop.swingx.JXImagePanel());
     
                try {
                    java.awt.Image image = ImageIO.read(getClass().getResource("affiches/PIC1.JPG"));
                   test.getAffiche().setImage(image);
     
                    test.getAffiche().setStyle(JXImagePanel.Style.SCALED);
                    } catch (java.io.IOException ex) {
                } 
     
                }
            });
        }
     
    public void setAffiche( org.jdesktop.swingx.JXImagePanel panel) {
     affiche = panel;
    }
    public org.jdesktop.swingx.JXImagePanel getAffiche() {
     return affiche;
    }
    Ca ne marche pas : je n'ais pas de message d'erreur, mais aucune image s'affiche....



    ce que je ne comprends pas c'est pourquoi je dois créer une instance de ma classe alors que je suis dans elle même déjà .... ????
    Que l'on créer une instance de classe extèrieur pour l'apeller ok mais pourquoi instancier une classe ou l'on est dessus ?

  4. #4
    Membre habitué
    Inscrit en
    Mars 2007
    Messages
    14
    Détails du profil
    Informations forums :
    Inscription : Mars 2007
    Messages : 14
    Par défaut
    Essaie ca:

    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 static void main(String args[]) {
            java.awt.EventQueue.invokeLater(new Runnable() {
                public void run() {
     
                new frame_accueil()
     
                frame_accueil test = new frame_accueil();
                test.setAffiche(new org.jdesktop.swingx.JXImagePanel());
     
                try {
                    java.awt.Image image = ImageIO.read(getClass().getResource("affiches/PIC1.JPG"));
                   test.getAffiche().setImage(image);
     
                    test.getAffiche().setStyle(JXImagePanel.Style.SCALED);
                    } catch (java.io.IOException ex) {
                } 
     
                test.setVisible(true);
     
                }
            });
        }
     
    public void setAffiche( org.jdesktop.swingx.JXImagePanel panel) {
     affiche = panel;
    }
    public org.jdesktop.swingx.JXImagePanel getAffiche() {
     return affiche;
    }
    Tu faisait un setVisible sur un autre panel que celui que tu crée

  5. #5
    Membre confirmé
    Inscrit en
    Février 2007
    Messages
    162
    Détails du profil
    Informations forums :
    Inscription : Février 2007
    Messages : 162
    Par défaut
    ne marche pas non plus, je ne vois pas d'ou vien l'erreure car je n'ais pas de messages d'erreurs ...

  6. #6
    Membre habitué
    Inscrit en
    Mars 2007
    Messages
    14
    Détails du profil
    Informations forums :
    Inscription : Mars 2007
    Messages : 14
    Par défaut
    Je suppose que ta classe frame_accueil, dérive de la classe JFrame...

    Si c'est le cas il faut aussi ajouter ton panel a celle ci.

    en faisant:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    test.setContentPane(getAffiche());

  7. #7
    Membre confirmé
    Inscrit en
    Février 2007
    Messages
    162
    Détails du profil
    Informations forums :
    Inscription : Février 2007
    Messages : 162
    Par défaut
    Ji comprends plus rien lol ^^


    Je te t'envoie ma source par mp, se sera plus simple je pense, tu verra tout de suite l'erreure...

    edit : finalement j'ai trouvé quelque chose qui fonctionne :
    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
     
    public static void main(String args[]) {
            java.awt.EventQueue.invokeLater(new Runnable() {
                public void run() {
                frame_accueil test = new frame_accueil();
                test.setVisible(true);
                try {
                    java.awt.Image image = ImageIO.read(getClass().getResource("affiches/PIC1.JPG"));
                    test.affiche.setImage(image);
                    } catch (java.io.IOException ex) {
                } 
     
                }
            });
        }

  8. #8
    Membre habitué
    Inscrit en
    Mars 2007
    Messages
    14
    Détails du profil
    Informations forums :
    Inscription : Mars 2007
    Messages : 14
    Par défaut
    Ok je viens de regarder ton code.

    Essaie ca dans le méthode main:

    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
     
    public static void main(String args[]) {
            java.awt.EventQueue.invokeLater(new Runnable() {
                public void run() {
     
     
                frame_accueil test = new frame_accueil();
     
                try {
                    java.awt.Image image = ImageIO.read(getClass().getResource("affiches/PIC1.JPG"));
                   test.getAffiche().setImage(image);
     
                    test.getAffiche().setStyle(JXImagePanel.Style.SCALED);
                    } catch (java.io.IOException ex) {
                } 
     
                test.setVisible(true);
     
                }
            });
        }

  9. #9
    Membre confirmé
    Inscrit en
    Février 2007
    Messages
    162
    Détails du profil
    Informations forums :
    Inscription : Février 2007
    Messages : 162
    Par défaut
    Lol ok
    J'ai trouvé une solution en meme temps que toi !! Merci infiniment pour ton aide !!

    Bon j'ai l'impression que j'y comprends un peu plus au fonctionnement des classes....

    Par contre pourrait tu m'expliquer a quoi sert le static ??

    De plus, je ne peux faire appel a "test" depuis une autre fonction ou évenement... comment faire pour rendre la variable "test" accessible depuis n'importe ou dans la classe voir de n'importe quelle class ??

    Je sais je suis saoulant des fois

  10. #10
    Membre habitué
    Inscrit en
    Mars 2007
    Messages
    14
    Détails du profil
    Informations forums :
    Inscription : Mars 2007
    Messages : 14
    Par défaut
    Pour ta question sur static:



    Sinon dans ta classe frame_accueil, ton objet test correspond a this.

    Il serait peut etre opportun de revoir les bases de Java

  11. #11
    Membre confirmé
    Inscrit en
    Février 2007
    Messages
    162
    Détails du profil
    Informations forums :
    Inscription : Février 2007
    Messages : 162
    Par défaut
    Arg je ne sais pas se qui s'est passé mais je ne peux pas voir ton explication sur static....

    Sinon j'ai des bases en programmations j'ai fais pas mal de visual basic...
    Mais c'est vrai que le java est assez différent donc j'ai quelques notions a revoir...


  12. #12
    Membre confirmé
    Inscrit en
    Février 2007
    Messages
    162
    Détails du profil
    Informations forums :
    Inscription : Février 2007
    Messages : 162
    Par défaut
    tu dis que this correspond à test et pourtant cela génére des erreures de remplaçer
    test.getAffiche().setImage(image);
    par
    this.getAffiche().setImage(image);

    donc il y a une quelque chose qui n'est pas logique....

Discussions similaires

  1. Insérer image dans div
    Par sandytarit dans le forum Mise en page CSS
    Réponses: 9
    Dernier message: 30/05/2007, 10h39
  2. insérer image dans base de données
    Par eriz dans le forum Servlets/JSP
    Réponses: 2
    Dernier message: 16/04/2007, 12h03
  3. insérer images dans nbm
    Par jessie dans le forum NetBeans
    Réponses: 1
    Dernier message: 17/01/2007, 23h32
  4. [Image] charger une image dans le main
    Par GLDavid dans le forum Entrée/Sortie
    Réponses: 2
    Dernier message: 31/03/2006, 17h11
  5. [MySQL] insérer image dans bdd grace a un formulaire
    Par pod1978 dans le forum PHP & Base de données
    Réponses: 10
    Dernier message: 14/03/2006, 08h34

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