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

AWT/Swing Java Discussion :

[Débutant] Tracer une courbe main levée


Sujet :

AWT/Swing Java

  1. #1
    Membre régulier Avatar de L8O8L
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    148
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 148
    Points : 115
    Points
    115
    Par défaut [Débutant] Tracer une courbe main levée
    Salut à tous,
    je commence les GUI en java, et on doit réalisé un programme qui ouvre une fenetre et dessine avec la souris qd on clike et reste kliké avec le bouton gauche. Le dessin doit s'arreter avec un clik droit.
    On doit créer en fait une classe qui implémente MouseListener,MouseMotionListener.
    Mais moi ca ne fait pas grand chose :s

    Jpeux vous balancer mes codes si vous voulez :
    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
     
    import java.awt.Graphics;
    import java.awt.event.MouseEvent;
    import java.awt.event.MouseListener;
    import java.awt.event.MouseMotionListener;
    import javax.swing.SwingUtilities;
     
    public class TraceurForme implements MouseListener,MouseMotionListener{
     
    	private int lastx;
    	private int lasty;
    	private Graphics g;
     
    	public TraceurForme(Graphics gr){
    		this.g=gr;
    	}
     
    	public void mouseClicked(MouseEvent e){
    			if (SwingUtilities.isRightMouseButton(e)){
    				lastx = -1;
    				lasty = -1;
    			}
    	}
    	public void mouseEntered(MouseEvent e){
     
    	}
    	public void mouseExited(MouseEvent e){
     
    	}
    	public void mousePressed(MouseEvent e){
    		lastx = e.getX();
    		lasty = e.getY();
    	}
    	public void mouseReleased(MouseEvent e){
     
    	}
    	public void mouseMoved(MouseEvent e){
     
    	}
     
    	public void mouseDragged(MouseEvent e){
    		lastx = e.getX();
    		lasty = e.getY();
    	}
     
    	public int getLastX(){
    		return lastx;
    	}
     
    	public int getLastY(){
    		return lasty;
    	}
     
    	public Graphics getG(){
    		return g;
    	}
    }
    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
     
    public class DessinFigures extends JPanel{
     
     
    	[......]
     
    	public void trace(Color c){
    		int x1 = -1, x2 = -1, y1 = -1, y2 = -1;
    		TraceurForme tf = new TraceurForme(getGraphics());
    		while((tf.getLastX() != -1) && (tf.getLastY() != -1)){
    			x1 = tf.getLastX();
    			x2 = x1;
    			y1 = tf.getLastY();
    			y2 = y1;
    			if (x2 != tf.getLastX() && y2 != tf.getLastY()){
    				x2 = tf.getLastX();
    				y2 = tf.getLastY();
    				tf.getG().drawLine(x1, y1, x2, y2);
    				x1=x2;
    				y1=y2;
    			}
    		}
    		removeMouseListener(tf);
    		repaint();
    	}
    }
    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
     
    import java.awt.*;
    import javax.swing.*;
    import java.util.*;
     
    public class Dialogue {
     
    	public static void main(String[] args) {
    		JFrame fenetre = new JFrame("TITRE");
    		DessinFigures dessin = new DessinFigures();
    		fenetre.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    		dessin.setPreferredSize(new Dimension(800,600));
    		fenetre.setContentPane(dessin);
    		fenetre.pack();
    		fenetre.setVisible(true);
    		dessin.trace(Color.black);
    		fenetre.setVisible(true);
            }
    }
    J'vous ai enlever du code mais si vous en voulez plus faites moi signe et si vous voulez des explications j'peux aussi vous en donner!
    Merci d'avance

  2. #2
    Membre régulier Avatar de L8O8L
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    148
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 148
    Points : 115
    Points
    115
    Par défaut
    up plz!!

  3. #3
    Membre actif
    Avatar de JMLLB
    Inscrit en
    Septembre 2006
    Messages
    285
    Détails du profil
    Informations forums :
    Inscription : Septembre 2006
    Messages : 285
    Points : 268
    Points
    268
    Par défaut
    Voila comment je m'y prendrai:

    J'étendrai un JPanel implemetant un mouseMotionListener.

    J'utiliserai mouseDraggred avec un test sur le bouton de la souris.

    Dans cette méthode je renseignerai un tableau de boolean de la taille de ma fenêtre (penser au problème de redimensionnement) correspondant au pixels survolés.

    Je redefinirai la méthode paint pour dessiner les pixels avec éventuellement une largeur différente (un int à la place d'un boolean).

    Il y a certainnement plus optimisé mais cette solution à le mérite d'être simple à mettre en place. Bon il faut sans doute peaufiner un peu avec la méthode mouseReleased et tirer des lignes entre les points n et n+1.

  4. #4
    Membre régulier Avatar de L8O8L
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    148
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 148
    Points : 115
    Points
    115
    Par défaut
    En fait le truc c'est qu'on a pas le choix

    C'est suivant ce model (les memes classes et methodes) et c'est tout ^^

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

Discussions similaires

  1. Réponses: 5
    Dernier message: 30/09/2014, 00h08
  2. Tracer une courbe dans un formulaire ?
    Par jessy212 dans le forum Access
    Réponses: 5
    Dernier message: 04/09/2006, 17h46
  3. Tracer une courbe avec 2 tableau de points
    Par babarpapa dans le forum 2D
    Réponses: 3
    Dernier message: 19/04/2006, 16h24
  4. [Images] [Librairie] Tracer une courbe ???
    Par cedre22 dans le forum Bibliothèques et frameworks
    Réponses: 7
    Dernier message: 20/02/2006, 15h53
  5. Tracer une courbe théorique sur un TChart
    Par marsupilami34 dans le forum Composants VCL
    Réponses: 2
    Dernier message: 29/09/2005, 12h46

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