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.
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.
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 ?
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.
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.
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 ?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.
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) { ... } }
Dernière modification par sinok ; 03/07/2008 à 17h55. Motif: Ajout des balises [code][/code], merci d'y penser
euh... je m'excuse mais je viens de m'apercevoir que mon objet Graphics est "g"
Je reviens à l'assaut à la prochaine vraie difficulté
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.
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/
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 :
histoire de profiter des possibilités avancées (Java2D, etc...) de Graphics2D.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 protected void paintComponent(Graphics g) { Graphics2D g2d = (Graphics2D)g; [...] }
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.
Merci beaucoup pour tout, je vais étudier tout ça.
++
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager