Dessiner un segment
ELALAOUI2
Messages postés
28
Date d'inscription
Statut
Membre
Dernière intervention
-
ELALAOUI2 Messages postés 28 Date d'inscription Statut Membre Dernière intervention -
ELALAOUI2 Messages postés 28 Date d'inscription Statut Membre Dernière intervention -
svp, j'ai fait beaucoup d'essaie pour dessiner un segment sous java, je veux par exemple : saisir les cordonnées des deux points ( début et fin) par le clavier , après ça un segment qui se dessine sur une fenêtre !!
je ne sais pas si c'est possible ou pas ?
sinon je peux vous montrer mon code qui me donne une fenêtre vide !!!
et merci d'avance
je ne sais pas si c'est possible ou pas ?
sinon je peux vous montrer mon code qui me donne une fenêtre vide !!!
et merci d'avance
A voir également:
- Dessin d'un segment
- Dessiner un tableau - Guide
- Logiciel dessin technique gratuit - Télécharger - CAO-DAO
- Groupe de 4 personnages dessin animé ✓ - Forum Loisirs / Divertissements
- Télécharger dessin animé gratuit disney ✓ - Forum Cinéma / Télé
- Waptrick dessin anime - Forum Cinéma / Télé
2 réponses
Bonjour,
Tu as la méthode drawLine.
Documentation :
https://docs.oracle.com/javase/9/docs/api/java/awt/Graphics.html#drawLine-int-int-int-int-
Tutoriel :
https://docs.oracle.com/javase/tutorial/2d/basic2d/index.html
Tu as la méthode drawLine.
Documentation :
https://docs.oracle.com/javase/9/docs/api/java/awt/Graphics.html#drawLine-int-int-int-int-
Tutoriel :
https://docs.oracle.com/javase/tutorial/2d/basic2d/index.html
d'accord merci, mais mon problème c'est que je connais cette méthode drawLine() .... ce que je veux faire c'est de créer une classe Segment qui dessine une ligne par deux méthodes différentes : Bresenham ou polynomiale afin de l'utiliser dans une autre classe qui hérite JPanel pour pouvoir saisir les cordonnées xd, yd, xf, yf par le clavier et obtenir à la fin une fenêtre qui contient une ligne tracé
bref je veux un exemple simple et complet ( contient toute les classes et main aussi ) qui explique comment dessiner une ligne pour trouver l'erreur que je fais !!!
car je ne sais pas ou je me suis trompé exactement ? dans la classe qui hérite JFram , dans la classe qui hérite JPanel ? ou dans le main ?
et merci
bref je veux un exemple simple et complet ( contient toute les classes et main aussi ) qui explique comment dessiner une ligne pour trouver l'erreur que je fais !!!
car je ne sais pas ou je me suis trompé exactement ? dans la classe qui hérite JFram , dans la classe qui hérite JPanel ? ou dans le main ?
et merci
bon je vais te montrer mon code qui dessine une cercle par 3 méthodes !!! mais qu'il m'affiche une fenêtre vide
package outils; import java.awt.Color; import java.awt.Graphics; import java.awt.Point; import java.util.Scanner; import javax.swing.JFrame; import javax.swing.JPanel; public class PanneauDessin2D extends JPanel { private Point p = null; private int methode; private int r; public PanneauDessin2D(){ super(); } public void paintComponent(Point p, int r, Graphics g) { super.paintComponent(g); g.setColor(Color.white); g.fillRect(0, 0, this.getWidth(), this.getHeight()); g.setColor(Color.BLACK); g.drawRect(0, 0, this.getWidth(), this.getHeight()); g.setColor(Color.red); g.drawLine(0, this.getHeight()/2, this.getWidth(), this.getHeight()/2); g.drawLine(this.getWidth()/2, 0, this.getWidth()/2, this.getHeight()); g.setColor(Color.BLACK); g.drawString("Y", this.getWidth()/2 + 10,20); g.drawString("X", this.getWidth() - 20,this.getHeight()/2 - 10); g.setColor(Color.BLUE); draw(p , r, g); } private void draw(Point p, int r, Graphics g) { switch (methode) { case 1: Cercle.cercleBresenham(p, r, g); break; case 2: Cercle.cerclePolynomiale(p, r, g); break; case 3: Cercle.cercleTrigonometrique(p, r, g); break; default: System.out.println("vous avez saisi une mauvaise valeur!"); } } public Point getP() { return p; } public void setP(Point p) { this.p = p; } public int getr() { return r; } public void setR(int r) { this.r = r; } public int getMethode() { return methode; } public void setMethode(int methode) { this.methode = methode; } }
package outils; import java.awt.Container; import java.awt.Point; import java.util.Scanner; import javax.swing.JFrame; import javax.swing.JPanel; public class Fenetre extends JFrame{ public Fenetre(){ super(); ProprietesFenetre(); } public void ProprietesFenetre(){ Point p = new Point(); JFrame window = new JFrame(); window.setSize(640,430); window.setVisible(true); window.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); System.out.println("donnez la valeur x de centre "); Scanner sc = new Scanner(System.in); int x= sc.nextInt(); p.x=x; System.out.println("donnez la valeur y de centre "); int y= sc.nextInt(); p.y=y; System.out.println("donnez la valeur r de rayon "); int r= sc.nextInt(); System.out.println("choisir une méthode pour dessiner une cercle: "); System.out.println("1- Bresenham "); System.out.println("2- Polynomiale "); System.out.println("3- Trigonometrique "); Scanner choix = new Scanner(System.in); int methode = choix.nextInt(); PanneauDessin2D PD = new PanneauDessin2D(); PD.setMethode(methode); PD.setP(p); PD.setR(r); window.getContentPane().add(PD); } }
package outils; import java.awt.Point; import java.util.Scanner; import javax.swing.JFrame; import javax.swing.JPanel; public class Main { public static void main(String[] args) { Fenetre fenetre = new Fenetre(); } }
Il ne faut pas changer la signature de la méthode paintComponent, elle ne prends qu'un seul argument : Graphics, si tu ajoutes les paramètres Point p, int r, ce n'est pas la même méthode. Et celle que Java appelle c'est celle avec un seul argument qui continue d'exister dans JFrame mais qui dessine une fenêtre vide.
Remarque : pour voir ce genre de choses je te conseilles de mettre l'annotation @Override sur chaque méthode que tu redéfinis, ça t'aurais permis de voir qu'il y avait un problème.
Remarque : pour voir ce genre de choses je te conseilles de mettre l'annotation @Override sur chaque méthode que tu redéfinis, ça t'aurais permis de voir qu'il y avait un problème.
@Override public void paintComponent(Graphics g) { super.paintComponent(g);