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

2D Java Discussion :

Graphics comment ça marche ?


Sujet :

2D Java

  1. #1
    Invité
    Invité(e)
    Par défaut Graphics comment ça marche ?
    Bonjour,

    Comment ça marche "Graphics" ?

    NetBeans ne veut pas que je fasse Graphics monGraph = new Graphics();

    Et je vois pas comment faire de graphes.... Merci.

  2. #2
    Modérateur
    Avatar de dinobogan
    Homme Profil pro
    ingénieur
    Inscrit en
    Juin 2007
    Messages
    4 073
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France

    Informations professionnelles :
    Activité : ingénieur
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2007
    Messages : 4 073
    Points : 7 163
    Points
    7 163
    Par défaut
    Que cherches-tu as faire ? Dessiner dans un composant ? Créer une image "offscreen" (sans l'afficher, seulement l'écrire sur disque) ? Faire une animation ? Un jeu ?

  3. #3
    Invité
    Invité(e)
    Par défaut
    Désolé pour l'imprécision.

    J'ai une matrice avec les coordonnées de points que j'aimerais bien afficher dans un graphe en nuage de point.

    Il me semble que dans Graphics on peut afficher des String suivant leurs coordonnées; don "." fera mon nuage de points. Et je veux afficher ça dans un JPanel pour une GUI.

    Merci.

  4. #4
    Modérateur
    Avatar de dinobogan
    Homme Profil pro
    ingénieur
    Inscrit en
    Juin 2007
    Messages
    4 073
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France

    Informations professionnelles :
    Activité : ingénieur
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2007
    Messages : 4 073
    Points : 7 163
    Points
    7 163
    Par défaut
    Commence par construire une classe qui étend JPanel. Il te faut surcharger la méthode "paintComponent", qui t'offre en paramètre une instance de Graphics.
    Parmi toutes les possibilités, deux thèmes principaux se dégagent :
    1. soit tu codes tout l'affichage dans la méthode paintComponent,
    2. soit tu construis une image (BufferedImage par exemple), tu travailles sur cette image, et lorsqu'elle est prête, tu appelles "repaint()" sur ton JPanel. Elle appelle indirectement "paintComponent". Et dans "paintComponent", tu affiches simplement l'image.

  5. #5
    Invité
    Invité(e)
    Par défaut
    mmh mmh... pour être franc c'est la première fois que je fais de la progra en java (en oubliant els cours pipo d'école d'ingé où on nous apprend à ne pas oublier le "" à la fin d'uns instruction). Si je commence comme ça ça va ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    import java.awt.Graphics;
    import javax.swing.JPanel; 
    public class graphe extends JPanel {
     
     public void paintComponent(Graphics g) {
     
     ... 
     } 
    }
    Et après ? Je peux directement coder ce dont j'ai besoin ? Il faut créer quelque chose ? On en peut pas créer un objet Graphics ?... Je consulte l'API mais je n'arrive pas à voir où je vais. Merci pour ton aide.
    Dernière modification par sinok ; 03/07/2008 à 17h55. Motif: Ajout des balises [code][/code], merci d'y penser

  6. #6
    Invité
    Invité(e)
    Par défaut
    euh... je m'excuse mais je viens de m'apercevoir que mon objet Graphics est "g"

    Je reviens à l'assaut à la prochaine vraie difficulté

  7. #7
    Invité
    Invité(e)
    Par défaut
    Me revoilà.

    J'ai donc fait ma classe graphe dans laquelle je lui dis de tracer des "trucs" (pour l'instant j'en suis à l'expérimental) et j'ai créé mon objet de cette classe dans ma classe principale.

    Je me retrouve donc avec : mon JPanel qui s'appelle fenetre et mon objet trace de la classe graphe.

    J'ai vu qu'il y a des méthodes paint(Graphics g) mais je ne sais pas à quoi correspond ce g. Quant à tes tips pour rpaint et le reste... j'avoue que je ne sais pas trop !

    Merci pour ton aide.

  8. #8
    Membre confirmé Avatar de KindPlayer
    Profil pro
    Inscrit en
    Février 2007
    Messages
    471
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 471
    Points : 477
    Points
    477
    Par défaut lis un tutoriel
    C'est vrai que le traitement des objets Graphics en java est un peu particulier. Aussi je te suggère de commencer par lire un tutoriel pour commencer.
    En voici un par exemple:
    duj.developpez.com/tutoriels/java/dessin/intro/

  9. #9
    Rédacteur/Modérateur

    Avatar de bouye
    Homme Profil pro
    Information Technologies Specialist (Scientific Computing)
    Inscrit en
    Août 2005
    Messages
    6 860
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : Nouvelle-Calédonie

    Informations professionnelles :
    Activité : Information Technologies Specialist (Scientific Computing)
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Août 2005
    Messages : 6 860
    Points : 22 900
    Points
    22 900
    Billets dans le blog
    51
    Par défaut
    Le cours ainsi que la dont les liens se trouvent tout en haut de ce topic

    Un Graphics (voir aussi Graphics2D qui permet de faire du rendu plus avancé) c'est grosso-modo une zone de dessin lié à une sortie quelconque dont on ne connait généralement pas la nature (car on veut le plus souvent dessiner de manière générique quelque soit la sortie). Ca peut être :
    - l'ecran (généralement le Graphics passé en paramètre de paint() ou paintComponent() dans les Component ou JComponent).
    - l'imprimante (même chose avec la méthode print() ou l'interface Printable).
    - une image en mémoire qu'on aura créée soi-même (voir BufferedImage).
    - un fichier d'image vectoriel (voir les API permettant de générer du PostScript, du PDF ou du SVG).
    - ...

    On le construit rarement soi-même (mise à part quand on utilise une image qu'on crée soi-même). Le plus souvent il nous est fourni par une autre partie de l'API qui appelle notre code à nous. C'est ce qui se fait quand on surcharge paintComponent() : le g représente (en général) l'écran et tu dois dessiner dedans avec les méthodes décrites dans la documentation de la classe Graphics (voir également Graphics2D qui est une extension de Graphics).

    Note : la plupart des Graphics utilisés dans Swing sont des Graphics2D. Ainsi on peut, la plupart du temps, faire :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    protected void paintComponent(Graphics g) {
      Graphics2D g2d = (Graphics2D)g;
      [...]
    }
    histoire de profiter des possibilités avancées (Java2D, etc...) de Graphics2D.

    Note 2 : quand on est en AWT (Panel, etc...), on redéfinie paint(). Quant on est en Swing (JPanel, etc...), on redéfinie paintComponent(). En effet la méthode paint() dans les JComponent en appelle d'autres (paintComponent(), paintChildren(), paintBorder()) qui sont nécessaire au bon rendu/affichage des composants et de leur sous-composants ; on évitera donc de la surcharger.

  10. #10
    Invité
    Invité(e)
    Par défaut
    Merci beaucoup pour tout, je vais étudier tout ça.

    ++

Discussions similaires

  1. ToAsciiEx, comment cela marche ?
    Par mikyfpc dans le forum C++Builder
    Réponses: 2
    Dernier message: 17/02/2004, 21h39
  2. [MFC] list box : comment ça marche
    Par runn2 dans le forum MFC
    Réponses: 4
    Dernier message: 28/01/2004, 12h36
  3. [SYNEDIT] -> Comment ça marche ?
    Par MaTHieU_ dans le forum C++Builder
    Réponses: 2
    Dernier message: 18/01/2004, 19h11
  4. [TP][Turbo Vision] comment ça marche ??
    Par Costello dans le forum Turbo Pascal
    Réponses: 7
    Dernier message: 05/08/2003, 00h24
  5. [update][req. imbriquee] Comment ca marche ??
    Par terziann dans le forum Langage SQL
    Réponses: 3
    Dernier message: 11/07/2003, 12h51

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