Dessiner un segment

Fermé
ELALAOUI2 Messages postés 29 Date d'inscription samedi 14 février 2015 Statut Membre Dernière intervention 2 novembre 2017 - 1 nov. 2017 à 21:01
ELALAOUI2 Messages postés 29 Date d'inscription samedi 14 février 2015 Statut Membre Dernière intervention 2 novembre 2017 - 2 nov. 2017 à 15:26
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

2 réponses

KX Messages postés 16733 Date d'inscription samedi 31 mai 2008 Statut Modérateur Dernière intervention 31 janvier 2024 3 015
1 nov. 2017 à 21:06
0
ELALAOUI2 Messages postés 29 Date d'inscription samedi 14 février 2015 Statut Membre Dernière intervention 2 novembre 2017
Modifié le 1 nov. 2017 à 21:39
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
0
KX Messages postés 16733 Date d'inscription samedi 31 mai 2008 Statut Modérateur Dernière intervention 31 janvier 2024 3 015
1 nov. 2017 à 21:46
Si on te donne un code tout fait qui n'a rien à voir avec ce que tu as commencé ça ne te permettrait pas de comprendre les erreurs sur ton code... et puis on n'a pas que ça à faire de tout reprendre de zéro alors que tu as déjà commencé.
0
ELALAOUI2 Messages postés 29 Date d'inscription samedi 14 février 2015 Statut Membre Dernière intervention 2 novembre 2017 > KX Messages postés 16733 Date d'inscription samedi 31 mai 2008 Statut Modérateur Dernière intervention 31 janvier 2024
Modifié le 1 nov. 2017 à 22:21
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();
  
 }

}
0
KX Messages postés 16733 Date d'inscription samedi 31 mai 2008 Statut Modérateur Dernière intervention 31 janvier 2024 3 015
1 nov. 2017 à 22:23
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.

@Override
public void paintComponent(Graphics g) {
    super.paintComponent(g);
0
ELALAOUI2 Messages postés 29 Date d'inscription samedi 14 février 2015 Statut Membre Dernière intervention 2 novembre 2017 > KX Messages postés 16733 Date d'inscription samedi 31 mai 2008 Statut Modérateur Dernière intervention 31 janvier 2024
2 nov. 2017 à 15:26
d'accord merci, je vis faire ce que vous m'avez dit
0