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

 Java Discussion :

Problème avec l’objet Graphics


Sujet :

Java

  1. #1
    Membre actif
    Homme Profil pro
    Inscrit en
    Octobre 2007
    Messages
    487
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2007
    Messages : 487
    Points : 294
    Points
    294
    Par défaut Problème avec l’objet Graphics
    Je ne sais pas comment je dois ajouter mon objet graphics dans l’objet JPanel
    J’ai écrit ça mais ça me donne 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
    import java.awt.Color;
    import java.awt.Graphics;
    
    import javax.swing.*;
    public class evo {
        public static void main(String []argv){
            Graphics g;
            JFrame j=new JFrame();
            JPanel p=new JPanel();
            p.setBackground(Color.WHITE);
            g.fillOval(200, 200, j.getWidth()/2, j.getHeight()/2);
            p.add(g);
            j.setTitle("evo");
            j.setSize(600, 600);
            j.setContentPane(p);
            j.setVisible(true);
            
        }
    
    }
    Merci d'avance

  2. #2
    Expert éminent sénior
    Avatar de sinok
    Profil pro
    Inscrit en
    Août 2004
    Messages
    8 765
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Août 2004
    Messages : 8 765
    Points : 12 977
    Points
    12 977
    Par défaut
    Bon on va dire que ce n'est absolument pas la manière de procéder.
    De toute façon je doute que ton programme compile sachant que tes Graphics sont nuls.

    En ce qui concerne Swing, pour dessiner sur un composant (on évite de dessiner directement dur une JFrame sauf cas exceptionnel) on crée une classé héritant de ce composant =dont on redéfinis la méthode
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    protected void paintComponent(Graphics g)
    Cette méthode fourni un objet Graphics en paramètre (la plupart du temps le type dynamique de cet objet est Graphics2D en Swing).

    Pour déssiner de façon durable sur un composant il faut utiliser les primitives graphiques (drawOval & cie) dans la méthode paintComponent.

    Voici un exemple :

    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.Color;
    import java.awt.Graphics;
    import java.awt.Graphics2D;
    import java.awt.Insets;
    import java.awt.LayoutManager;
    import java.awt.RenderingHints;
     
    import javax.swing.BorderFactory;
    import javax.swing.JFrame;
    import javax.swing.JPanel;
    import javax.swing.UIManager;
    import javax.swing.UnsupportedLookAndFeelException;
     
    import com.sun.java.swing.plaf.gtk.GTKLookAndFeel;
     
     
    public class RoundCorneredPanel extends JPanel {
     
        public RoundCorneredPanel() {
            // TODO Auto-generated constructor stub
        }
     
        public RoundCorneredPanel(LayoutManager layout) {
            super(layout);
            // TODO Auto-generated constructor stub
        }
     
        public RoundCorneredPanel(boolean isDoubleBuffered) {
            super(isDoubleBuffered);
            // TODO Auto-generated constructor stub
        }
     
        public RoundCorneredPanel(LayoutManager layout, boolean isDoubleBuffered) {
            super(layout, isDoubleBuffered);
            // TODO Auto-generated constructor stub
        }
     
        @Override
        protected void paintComponent(Graphics g) {
            if(isShowing()) {
                Insets insets = getBorder().getBorderInsets(this);
                Graphics2D g2d = (Graphics2D) g;
                g2d.setRenderingHint(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON);
                g.setColor(getBackground());
                g.fillRoundRect(0+insets.left, 0+insets.top, getWidth()-insets.right-insets.left, getHeight()-insets.bottom-insets.top, 50, 50);
            }
        }
     
        public static void main(String[] args) {
            try {
                UIManager.setLookAndFeel(new GTKLookAndFeel());
            } catch (UnsupportedLookAndFeelException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
            JFrame f = new JFrame();
            RoundCorneredPanel p = new RoundCorneredPanel();
            p.setBackground(Color.black);
            p.setBorder(BorderFactory.createEmptyBorder(10, 10, 10, 10));
            f.add(p);
            f.setSize(200, 200);
            f.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
            f.setLocationRelativeTo(null);
            f.setVisible(true);
        }
     
    }
    Hey, this is mine. That's mine. All this is mine. I'm claiming all this as mine. Except that bit. I don't want that bit. But all the rest of this is mine. Hey, this has been a really good day. I've eaten five times, I've slept six times, and I've made a lot of things mine. Tomorrow, I'm gonna see if I can't have sex with something.

  3. #3
    Membre actif
    Homme Profil pro
    Inscrit en
    Octobre 2007
    Messages
    487
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2007
    Messages : 487
    Points : 294
    Points
    294
    Par défaut S.O.S.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    import java.awt.Graphics;
    import javax.swing.JPanel;
     
    public class Panneau extends JPanel {
     
            public void paintComponent(Graphics g){
     
                    g.drawRect(10, 10, 50, 60);
                    g.fillRect(65, 65, 30, 40);
            }               
    }
    Je sais pas comment puis je appeler la procédure paintComponent qui comme paramettre l'objet Graphics dans mon programme principal

  4. #4
    Expert éminent sénior
    Avatar de sinok
    Profil pro
    Inscrit en
    Août 2004
    Messages
    8 765
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Août 2004
    Messages : 8 765
    Points : 12 977
    Points
    12 977
    Par défaut
    La méthode paintComponent est automatiquement appelée par Swing au moment de l'affichage, tu n'as pas besoin de l'appeler toi même. Il te suffit d'ajouter une instance de ta classe Panneau à une JFrame et d'afficher la JFrame. Basta.
    Hey, this is mine. That's mine. All this is mine. I'm claiming all this as mine. Except that bit. I don't want that bit. But all the rest of this is mine. Hey, this has been a really good day. I've eaten five times, I've slept six times, and I've made a lot of things mine. Tomorrow, I'm gonna see if I can't have sex with something.

Discussions similaires

  1. [Graphics] Problème avec paintComponent()
    Par Raiden1234 dans le forum AWT/Swing
    Réponses: 4
    Dernier message: 11/02/2008, 19h50
  2. problème avec drawString() - Graphics
    Par Arrakis dans le forum 2D
    Réponses: 5
    Dernier message: 05/12/2007, 23h08
  3. Problème avec l'objet Graphics (couleur)
    Par deadstar62 dans le forum AWT/Swing
    Réponses: 2
    Dernier message: 27/08/2007, 13h35
  4. Réponses: 7
    Dernier message: 04/06/2006, 17h00
  5. [xsl:fo] problème avec external-graphic
    Par jehlg dans le forum XSL/XSLT/XPATH
    Réponses: 2
    Dernier message: 11/10/2005, 11h57

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