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

 Java Discussion :

problème avec Repaint et Paint


Sujet :

Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre habitué
    Profil pro
    Inscrit en
    Avril 2010
    Messages
    8
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2010
    Messages : 8
    Par défaut problème avec Repaint et Paint
    Bonjour, je suis débutant en java et je bloque sur un truc qui doit être évident pour la plupart d'entre vous, voila j'ai une class Fenêtre,un class Trait et une class Groupe, dans la classe Groupe il y a une méthode paint() appelé par la méthode repaint() qui dessine un trait et une méthode paint() dans la class Trait qui dessine un trait en cours de validation, la class Fenêtre affiche une fenêtre dans laquelle doit voir les traits en construction et construit, je n'arrive pas a faire en sorte que la méthode repaint() fonctionne, voici mon code, la contrainte est qu'il doit bien y a voir 3 class différentes, voici mon code, merci d'avance pour votre aide.


    Class Fenêtre
    ********************************************************
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    import java.awt.Frame;
    import java.awt.event.WindowAdapter;
    import java.awt.event.WindowEvent;
    public class Fenetre extends Frame
    {
    private static final long serialVersionUID = 1L;
    Trait t = new Trait();
    Groupe g = new Groupe();
    public Fenetre()
    {
    setLocation(400, 200);
    setSize(520, 400);
    addWindowListener(new WindowAdapter()
    {
    public void windowClosing(WindowEvent e)
    {
    System.exit(0);
    }
    });
    addMouseListener(t);
    addMouseMotionListener(t);
    addMouseListener(g);
    addMouseMotionListener(g);
    setVisible(true);
    }}
    *********************************************************************
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    Class Groupe
    import java.awt.*;
    import java.awt.event.*;
    public class Groupe extends Frame implements MouseListener,MouseMotionListener
    {
    Groupe g;
    private static final long serialVersionUID = 1L;
    private final int MAX = 10; // nombre maximum de traits
    private Point starts[] = new Point[MAX]; // points de départ
    private Point ends [] = new Point [MAX]; // points d'arrivée
    private Point anchor; // point de départ de la ligne courante
    private Point currentPoint; // point d'arrivée de la ligne courante
    private int currline = 0; // nombre de ligne tracées
     
    public Groupe()
    {
    //addMouseListener(g);
    //addMouseMotionListener(g);
    }
    public void paint(Graphics g)
    {
    //dessin des lignes validées
    for (int i=0; i < currline;i++)
    {
    g.setColor(new Color((int)(Math.random()*0xFFFFFF)));
    g.drawLine(anchor.x,anchor.y,currentPoint.x,currentPoint.y);
    }
    }
    public void mouseClicked(MouseEvent me) {
     
    if (me.getButton() == MouseEvent.BUTTON1 && me.getClickCount()==2)
    {// clique gauche = effacement de tous les traits
    currline = 0;
    setTitle("");
    repaint();
    System.out.println("Groupe clicked");
    }
    if (currline >=0 && me.getButton() == MouseEvent.BUTTON3)
    currline=currline - 1;
    repaint();
    setTitle("");
    System.out.println("Groupe efface");
    }
     
    public void mouseEntered(MouseEvent e){}
    public void mouseExited(MouseEvent e) {}
    public void mousePressed(MouseEvent e){}
    public void mouseDragged(MouseEvent e){}
    public void mouseMoved(MouseEvent e) {}
     
    public void mouseReleased(MouseEvent me)
    {
    if (currline < MAX && me.getButton() == MouseEvent.BUTTON1 && currline >=0)
    {
    ends[currline] = me.getPoint();
    starts[currline] = anchor;
    currline++;
    currentPoint = null;
    anchor = null;
    repaint();
    System.out.println("Groupe released");
    }
    }
    }
    *****************************************************************
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    Class Trait
    import java.awt.*;
    import java.awt.event.*;
     
    public class Trait extends Frame implements MouseListener, MouseMotionListener
    {
    private static final long serialVersionUID = 1L;
    private final int MAX = 10; // nombre maximum de traits
    private Point starts[] = new Point[MAX]; // points de départ
    private Point ends [] = new Point [MAX]; // points d'arrivée
    private Point anchor; // point de départ de la ligne courante
    private Point currentPoint; // point d'arrivée de la ligne courante
    private int currline = 0; // nombre de ligne tracées
    Trait l;
     
    public void paint(Graphics g)
    {
    // dessin de la ligne courante si elle existe
    if ( currentPoint != null )
    {
    g.setColor(Color.PINK);
    g.drawLine(anchor.x,anchor.y,currentPoint.x,currentPoint.y);
    }
    }
     
    public Trait()
    {
     
    //addMouseListener(l);
    //addMouseMotionListener(l);
     
    }
     
    public void mousePressed(MouseEvent me)
    {
    if (currline < MAX )
    {
    anchor = me.getPoint();
    repaint();
    System.out.println("Pressed");
    }
    else
    {
    setTitle("Nombre de ligne maximum atteint");
    }
    }
    public void mouseDragged(MouseEvent me)
    {
    if (currline < MAX && me.getButton()!= MouseEvent.BUTTON3 && me.getButton()!=MouseEvent.BUTTON2)
    {
    System.out.println("Dragged");
    currentPoint = me.getPoint();
    repaint();
    }
    }
    public void mouseReleased(MouseEvent me)
    {
    if (currline < MAX && me.getButton() == MouseEvent.BUTTON1 && currline >=0)
    {
    ends[currline] = me.getPoint();
    starts[currline] = anchor;
    currline++;
    currentPoint = null;
    anchor = null;
    repaint();
    System.out.println("released");
    }
    }
    public void mouseClicked(MouseEvent e)
    {
    System.out.println("cliqued");
    }
    public void mouseEntered(MouseEvent e) {}
    public void mouseExited(MouseEvent e) {}
    public void mouseMoved(MouseEvent arg0){}
    }

  2. #2
    Expert éminent
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 482
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 482
    Par défaut
    Ta classe Fenetre étends Frame, est rendue visible mais ne contient rien.
    Tes classes Groupe et Trait sont aussi des Fenetre mais ne sont jamais rendu visible. Dans l'ensemble ca amène à afficher une fenetre vide, en tout et pour tout.

    Je te suggère de commencer par les cours java présents sur developpez pour comprendre comment faire des interfaces de bases avant de commencer à jouer avec les méthodes paint.

  3. #3
    Membre habitué
    Profil pro
    Inscrit en
    Avril 2010
    Messages
    8
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2010
    Messages : 8
    Par défaut
    merci pour ta non réponse

  4. #4
    Membre chevronné

    Profil pro
    Inscrit en
    Février 2008
    Messages
    658
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 658
    Par défaut
    La classe Fenetre seule doit herité de Frame.

    Les autres qui dessines des traits ou autres doivent s'etendre de JPanel ou Canvas pour tracer des traits.

    Alors quand tu crée alors un objet Groupe dans Fenetre, tu lui applique la methode repaint; il va dessiner ton trait

  5. #5
    Membre habitué
    Profil pro
    Inscrit en
    Avril 2010
    Messages
    8
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2010
    Messages : 8
    Par défaut
    Je te remercie pour ta réponse, mais je voudrais être sur de bien comprendre, je fais un extends de JPanel sur Groupe et Trait, mais dans Fenetre par quoi il faut remplacer

    addMouseListener(t);
    addMouseMotionListener(t);
    addMouseListener(g);
    addMouseMotionListener(g);
    encore merci

  6. #6
    Expert éminent
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 482
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 482
    Par défaut
    il faut surtout ajouter les composant ainsi créés à ta fenêtre, sinon ils n'existent pas graphiquement parlant, via un appel à add(Component)


    http://bruce-eckel.developpez.com/li...chap=14&page=0

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Problème avec classe et paint()
    Par babou54 dans le forum Applets
    Réponses: 2
    Dernier message: 28/10/2008, 18h49
  2. Problème avec repaint() et Thread.sleep
    Par fab13 dans le forum AWT/Swing
    Réponses: 7
    Dernier message: 12/08/2008, 23h02
  3. problème avec JApplet. repaint()
    Par anarchy_for_espa dans le forum AWT/Swing
    Réponses: 1
    Dernier message: 15/02/2008, 20h36
  4. [débutant] Problème avec la méthode "repaint"
    Par Mag007 dans le forum Langage
    Réponses: 2
    Dernier message: 29/03/2007, 21h35
  5. Problème avec les sprites et méthode Paint
    Par myrddin2006 dans le forum 2D
    Réponses: 2
    Dernier message: 19/11/2006, 02h43

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