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 :

comment dessiner ?


Sujet :

AWT/Swing Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Inscrit en
    Décembre 2005
    Messages
    134
    Détails du profil
    Informations forums :
    Inscription : Décembre 2005
    Messages : 134
    Par défaut comment dessiner ?
    bonjour tout le monde,

    je suis un peu débutant en java, et je me demandais quel composant utiliser pour dessiner dans une JFrame (le tout avec swing de préférence).
    Le but serait de faire des point, des cercles carré et polygone avec des couleurs différentes ... comprendre les bases quoi ...

    Merci d'avance.

  2. #2
    Membre Expert
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    1 252
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Mai 2004
    Messages : 1 252
    Par défaut
    L'idéal pour dessiner (et ne faire que cela) est d'utiliser un java.awt.Canvas, mais pour avoir un minimum de support d'écoute, utiliser un javax.swing.JComponent ne peut pas faire de tort.

    Dans tous les cas, il suffit de redéfinir la méthode

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    public void paint(Graphics g) {
      ...
      g.draw...(params...);
      g.draw...(params...);
      g.draw...(params...);
      g.draw...(params...);
      ...
    }

  3. #3
    Membre chevronné
    Avatar de Orian
    Inscrit en
    Août 2006
    Messages
    372
    Détails du profil
    Informations personnelles :
    Âge : 36

    Informations forums :
    Inscription : Août 2006
    Messages : 372

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

    Informations forums :
    Inscription : Août 2004
    Messages : 8 765
    Par défaut
    Citation Envoyé par dingoth
    L'idéal pour dessiner (et ne faire que cela) est d'utiliser un java.awt.Canvas, mais pour avoir un minimum de support d'écoute, utiliser un javax.swing.JComponent ne peut pas faire de tort.

    Dans tous les cas, il suffit de redéfinir la méthode

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    public void paint(Graphics g) {
      ...
      g.draw...(params...);
      g.draw...(params...);
      g.draw...(params...);
      g.draw...(params...);
      ...
    }
    Pour dessiner ae AWT oui, à partir du moment ou tu fais du swing tu peux oublier (cf heavyweight/lightweight). Dans Swing n'importe quel composant se prète au dessin, en effect ils héritent tous de JComponent et donc possède la méthode paintComponent.
    Ensuite pour faire du dessin pur autant utiliser un JComponent ou un JPanel, celà suffira amplement

  5. #5
    Membre confirmé
    Inscrit en
    Décembre 2005
    Messages
    134
    Détails du profil
    Informations forums :
    Inscription : Décembre 2005
    Messages : 134
    Par défaut
    suite à toutes vos remarque, je me pose des questions ...

    j'ai déclaré un JPanel dans lequel je souhaite faire mes dessins (jusque la, tout va bien).
    Puis je fais appel à la méthode paint de mon JPanel. cette méthode attend un Graphics comme objet.

    donc je déclare mon Graphics, mais je sais pas comment l'intencier !!!

    private Graphics g;
    ...

    Le constructeur de cette classe est "protected" du coup j'au une erreur quand je fais:
    g = new Graphics()

    ==>Cannot instantiate the type Graphics

    que dois je faire?

  6. #6
    Rédacteur
    Avatar de eclesia
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    2 111
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2006
    Messages : 2 111
    Par défaut
    L'objet Graphics est un objet qu'on "se passe" d'un objet a l'autre (je sais pas si je suis clair).

    tu as dans ton code d'origine :

    public void paint(Graphics g) {

    tu dois reutiliser le meme g et pas en creer un nouveau.

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

    Informations forums :
    Inscription : Août 2004
    Messages : 8 765
    Par défaut
    En swing mieux vaut redéfinir paintComponent que paint, grosso merdo

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    public class MonPanel extends JPanel {
    ...
     
    protected void paintComponent(Graphics g) {
    g.drawLine(..);
    g.fillRectangle(...);
    }
    }

Discussions similaires

  1. Comment dessiner une ligne dans un Chart ?
    Par libititi dans le forum Composants VCL
    Réponses: 3
    Dernier message: 16/06/2005, 14h56
  2. Comment dessiner sur un Bitmap sans scintillement ?
    Par TOTO32 dans le forum Composants VCL
    Réponses: 3
    Dernier message: 10/01/2005, 10h11
  3. DBGrid, comment dessiner dans les titres des colonnes
    Par dleu dans le forum Bases de données
    Réponses: 9
    Dernier message: 04/11/2004, 17h49
  4. [Transparent] - Comment dessiner sur 2 TImage ?
    Par TOTO32 dans le forum Langage
    Réponses: 15
    Dernier message: 08/08/2004, 01h06

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