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 :

Polygones et JComponents


Sujet :

Interfaces Graphiques en Java

  1. #1
    Membre à l'essai
    Homme Profil pro
    Inscrit en
    Août 2013
    Messages
    18
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations forums :
    Inscription : Août 2013
    Messages : 18
    Points : 13
    Points
    13
    Par défaut Polygones et JComponents
    Hello!

    Je cherche un moyen d'afficher un polygone selon le deuxième code ci-dessous.
    J'ai une JFrame, avec un JPanel comme contentPane.

    Ce premier code m'affiche un polygone :

    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
    class PolyGone extends JComponent {
     
      public void paint(Graphics g) {
        int[] x = new int[]{10,15,0,20};
        int[] y = new int[]{10,40,60,80};
        g.drawPolygon (x, y, x.length);    
      }
    }
     
    public class DrawPolygon {
      public static void main(String[] a) {
        JFrame jframe = new JFrame();
        jframe.setSize(500, 500);
     
        PolyGone poly = new PolyGone(); 
        jframe.getContentPane().add(poly);
     
     
        jframe.setVisible(true);
      }
    }
    Pourquoi la manière ci-dessous ne fonctionne pas? Quand est-ce que l'instance Graphics s'instancie?

    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
     
    class PolyGone extends JComponent {
     
      public void paint(Graphics g) {
        int[] x = new int[]{10,15,0,20};
        int[] y = new int[]{10,40,60,80};
        g.drawPolygon (x, y, x.length);    
      }
    }
     
    public class DrawPolygon {
      public static void main(String[] a) {
        JFrame jframe = new JFrame();
        jframe.setSize(500, 500);
     
        //J'aimerais qqchose comme ça:
        JPanel panel = new JPanel();
        jframe.setContentPane(panel);
     
        PolyGone poly = new PolyGone();
        panel.add(poly);
     
        //Plustot que ;
        /*
        PolyGone poly = new PolyGone(); 
        jframe.getContentPane().add(poly);
        */
     
        jframe.setVisible(true);
      }
    }

    ça fait quelques jours que je suis dessus vous auriez une idée?

    Merci, eldorico

  2. #2
    Modérateur
    Avatar de joel.drigo
    Homme Profil pro
    Ingénieur R&D - Développeur Java
    Inscrit en
    Septembre 2009
    Messages
    12 430
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieur R&D - Développeur Java
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2009
    Messages : 12 430
    Points : 29 131
    Points
    29 131
    Billets dans le blog
    2
    Par défaut
    Salut,

    C'est parce que ton JComponent n'a pas de taille (en fait il a une taille de (0,0) par défaut) : le layout manager a besoin de connaitre la connaitre, alors que dans le premier cas, le JComponent est étendu sur la totalité de la taille de la fenêtre. Par exemple, tu peux faire :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    class PolyGone extends JComponent {
     
            public void paint(Graphics g) {
              int[] x = new int[]{10,15,0,20};
              int[] y = new int[]{10,40,60,80};
              g.drawPolygon (x, y, x.length);    
            }
     
            @Override
            public Dimension getPreferredSize() {
                return new Dimension(20,80);
            }
     
    }
    L'expression "ça marche pas" ne veut rien dire. Indiquez l'erreur, et/ou les comportements attendus et obtenus, et donnez un Exemple Complet Minimal qui permet de reproduire le problème.
    La plupart des réponses à vos questions sont déjà dans les FAQs ou les Tutoriels, ou peut-être dans une autre discussion : utilisez la recherche interne.
    Des questions sur Java : consultez le Forum Java. Des questions sur l'EDI Eclipse ou la plateforme Eclipse RCP : consultez le Forum Eclipse.
    Une question correctement posée et rédigée et vous aurez plus de chances de réponses adaptées et rapides.
    N'oubliez pas de mettre vos extraits de code entre balises CODE (Voir Mode d'emploi de l'éditeur de messages).
    Nouveau sur le forum ? Consultez Les Règles du Club.

  3. #3
    Membre à l'essai
    Homme Profil pro
    Inscrit en
    Août 2013
    Messages
    18
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations forums :
    Inscription : Août 2013
    Messages : 18
    Points : 13
    Points
    13
    Par défaut
    Merci beaucoup!

    Je précise qu'en faisant setSize(Dimension) dans le constructeur n'a pas suffit.
    Mais comme tu me l'as dit, en ajout setPreferedSize(Dimension) dans le constructeur, ça a marché!

    Merci beaucoup!

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Transformer une ligne en polygone
    Par bl4d3 dans le forum Algorithmes et structures de données
    Réponses: 6
    Dernier message: 02/09/2003, 09h35
  2. Comment detecter un polygon sous le curseur
    Par FreshVic dans le forum OpenGL
    Réponses: 2
    Dernier message: 04/07/2003, 10h48
  3. Triangulation de Polygones
    Par seb_lisha dans le forum DirectX
    Réponses: 1
    Dernier message: 01/07/2003, 12h40
  4. [Algo] Point à l'intérieur d'un polygone ?
    Par kebby dans le forum C++Builder
    Réponses: 5
    Dernier message: 23/05/2003, 13h22
  5. une ligne et un polygone convexe
    Par rekam dans le forum Algorithmes et structures de données
    Réponses: 10
    Dernier message: 20/12/2002, 10h39

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