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 :

Probleme en dessinant des lignes a la souris


Sujet :

Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Candidat au Club
    Inscrit en
    Mars 2010
    Messages
    2
    Détails du profil
    Informations forums :
    Inscription : Mars 2010
    Messages : 2
    Par défaut Probleme en dessinant des lignes a la souris
    Voici mon code:

    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
    import javax.swing.*;
    import java.awt.event.*;
    import java.awt.Point;
     
    public class Fenetre extends JFrame implements MouseMotionListener, MouseListener{
     
        /**
             * 
             */
    	private static final long serialVersionUID = 1L;
    	private Point point;
     
    	public Fenetre(){
     
    	        this.setTitle("Ma premiere fenetre java");
    	        this.setSize(400, 500);
    	        this.setVisible(true);
    	        addMouseMotionListener(this);
    	}
     
    	//own method
    	public void capturePointPosition(MouseEvent arg0) {
    		// TODO Auto-generated method stub
    		mouseClicked(arg0);
    		System.out.println("point("+point.x+","+point.y+")");
    	}
     
    	@Override
    	public void mouseClicked(MouseEvent arg0) {		
    		Point p = new Point();
    		p.x = arg0.getX() ;
    		p.y = arg0.getY() ;	
    		point = p;
    	}
     
    	@Override
    	public void mouseDragged(MouseEvent arg0) {
    		// TODO Auto-generated method stub
     
     
    	}
     
    	@Override
    	public void mouseMoved(MouseEvent arg0) {
    		// TODO Auto-generated method stub
     
     
    	} 
     
     
    	@Override
    	public void mouseEntered(MouseEvent arg0) {
    		// TODO Auto-generated method stub
     
    	}
     
    	@Override
    	public void mouseExited(MouseEvent arg0) {
    		// TODO Auto-generated method stub
     
    	}
     
    	@Override
    	public void mousePressed(MouseEvent arg0) {
    		// TODO Auto-generated method stub
     
    	}
     
    	@Override
    	public void mouseReleased(MouseEvent arg0) {
    		// TODO Auto-generated method stub
     
    	}
    Dans la class main

    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
     import java.awt.event.*;
     
    class Test {
     
            public static void main(String[] args){
     
                    Fenetre v = new Fenetre();
                    MouseEvent e;
                    v.capturePointPosition(e);
     
     
    		}      
    }
     
     
    }
    Je veus juste que quelqu*un m'aide a lance l'application fenetre();

  2. #2
    Membre émérite Avatar de JoeChip
    Profil pro
    Inscrit en
    Septembre 2008
    Messages
    536
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Septembre 2008
    Messages : 536
    Par défaut
    Il faut commencer par savoir ouvrir la fenêtre avant de commencer à faire un programme plus compliqué. D'une manière générale, il faut toujours tester séparément chaque composant d'un programme, en partant du plus petit possible, puis en ajoutant et en testant au fur et à mesure ; il arrive sans arrêt que des débutants montrent des programmes de 200 lignes, écrites sans avoir jamais testé.

    Commencer à pseudo-implémenter des interfaces et des listeners avant même de savoir comment ouvrir une fenêtre, c'est une mauvaise idée : ça complique tout sans aucune utilité.

    Cela dit, pour que ta fenêtre soit visible, il faut à un moment dire "setVisible (true);". Je ne saurais trop te recommander la lecture de "Penser en Java", disponible là : http://bruce-eckel.developpez.com/li...aduction/tij2/ et d'autres tutos. Mais il FAUT tester chaque brique avant de monter le mur.

  3. #3
    Candidat au Club
    Inscrit en
    Mars 2010
    Messages
    2
    Détails du profil
    Informations forums :
    Inscription : Mars 2010
    Messages : 2
    Par défaut
    Non, en fait, je cherchais comment fonctionne un appel d'une application graphique ayant pas mal d'evenements, sans pour autant appeler les fonctions ki les traitent, l'une apres l'autre.
    Et j'ai trouver comment ca marche. Voici la version travaillée:

    Il s'agit de dessiner une ligne dans un panel en pressant et en tirant la souris dans un mouvement voulu.



    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
    77
    78
    79
    80
     
    import java.awt.Container;
    import java.awt.Dimension;
    import java.awt.Graphics;
    import java.awt.Point;
    import java.awt.event.MouseEvent;
    import java.awt.event.MouseListener;
    import java.awt.event.MouseMotionListener;
     
     
    import javax.swing.JFrame;
    import javax.swing.JPanel;
     
    public class DessinMouse extends JPanel implements MouseMotionListener ,MouseListener{
    	private Point start, current, end;
     
    	public DessinMouse() {
     
    		// JPanel(): creates new a panel with a double buffer and a flow layout.
    		super(); 
     
    		// add the Mousemotionlistener and Mouselistener to every object 
    		addMouseMotionListener(this);
    		addMouseListener(this);
     
    	}
     
    	/**
             * @param args
             */
    	public static void main(String[] args) {
    		// TODO Auto-generated method stub
    		JFrame saisiDessin = new JFrame("Lanceur d'application");
    		saisiDessin.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    		saisiDessin.setSize(500,400);
     
    		DessinMouse dessinmouse =  new DessinMouse();
    		saisiDessin.setContentPane(dessinmouse);//insert the mouse panel in the frame
    		saisiDessin.setVisible(true);
     
    	}
     
    	public void paintline(Graphics line){
    		// Draw a line out of the points the dragged mouse went trough
    		line.drawLine(start.x, start.y, current.x, current.y);
    	}
     
    	@Override
    	public void mouseDragged(MouseEvent arg0) {
    		// read the points from the panel and
    		current = new Point(arg0.getX(), arg0.getY());		
    		repaint();
    		System.out.println(" (" + arg0.getX() + "," + arg0.getY() + ")");
    	}
     
    	@Override
    	public void mouseMoved(MouseEvent arg0) {}
     
    	@Override
    	public void mouseClicked(MouseEvent e) {}
     
    	@Override
    	public void mouseEntered(MouseEvent e) {}
     
    	@Override
    	public void mouseExited(MouseEvent e) {}
     
    	@Override
    	public void mousePressed(MouseEvent e) {
    		// get the point the line will be drawn from
    		start = new Point( e.getX(),  e.getY());		
    		System.out.println(" Entry point is : (" + start.x + "," + start.y + ")");
    	}
     
    	@Override
    	public void mouseReleased(MouseEvent e) {
    		System.out.println("FIN du dessin");
    	}
     
    }

    Seulement mon problème est dans le panel, je n#arrive toujours pas à desinner ma ligne...! Je ne comprend pas où je fais erreur d'algorithme...

    Merci de m'aider.

  4. #4
    Modérateur
    Avatar de dinobogan
    Homme Profil pro
    ingénieur
    Inscrit en
    Juin 2007
    Messages
    4 073
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France

    Informations professionnelles :
    Activité : ingénieur
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2007
    Messages : 4 073
    Par défaut
    Ton erreur est sur le "new Point". Pour "start" et "curent", tu créés un objet local à la méthode qui masque l'objet membre de la classe. Cet objet local est invisible en dehors de la fonction.
    Tu dois conserver la même instance, ne pas faire de "new".
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java
    Que la force de la puissance soit avec le courage de ta sagesse.

Discussions similaires

  1. Dessiner des lignes de couleur différente
    Par gids01 dans le forum 2D
    Réponses: 4
    Dernier message: 06/11/2006, 12h14
  2. Probleme pour effacer des lignes
    Par Thargor dans le forum Oracle
    Réponses: 7
    Dernier message: 12/10/2005, 15h58
  3. [DBGRID][FAQ] Dessiner des lignes de couleur
    Par okparanoid dans le forum Bases de données
    Réponses: 5
    Dernier message: 11/10/2005, 18h10
  4. dessiner des lignes "cliquables"
    Par r0d dans le forum Webdesign & Ergonomie
    Réponses: 14
    Dernier message: 21/03/2005, 16h02

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