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

2D Java Discussion :

Affichage d'un point au clic


Sujet :

2D Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Mars 2009
    Messages
    19
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2009
    Messages : 19
    Par défaut Affichage d'un point au clic
    Bonsoir,
    Je programme une application qui est censée dessiner un point lorsque l'utilisateur clique dans la fenetre. Mais je n'arrive pas à faire afficher mon point.
    J'ai une JFrame qui contient un JPanel. Lors du clic le point est ajouté à une liste de points et repaint() est appelée, ce qui appelle la méthode redéfinie paint() du JPanel. J'ai du oublier un truc tout bete mais je n'arrive pas à corriger.
    Merci de m'aider.

    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
     
    public class DemoGUI extends JFrame implements MouseListener {
     
        private PanelDessin panelDessin;
     
     
        public DemoGUI() {
            super();
            this.setSize(800, 600);
            this.setResizable(false);
     
     
     
            panelDessin = new PanelDessin(this);
            panelDessin.setMinimumSize(new Dimension(700, 600));
            panelDessin.setBorder(new LineBorder(Color.blue));
            this.getContentPane().add(panelDessin, BorderLayout.CENTER);
            this.setDefaultCloseOperation(DISPOSE_ON_CLOSE);
        }
     
     
        public static void main(String args[]) {
            DemoGUI f = new DemoGUI();
            f.setVisible(true);
        }
     
        public void mouseClicked(MouseEvent e) {
            panelDessin.ajouterPoint(e);
            this.repaint();
        }
     
        public void mousePressed(MouseEvent e) {
            throw new UnsupportedOperationException("Not supported yet.");
        }
     
        public void mouseReleased(MouseEvent e) {
            throw new UnsupportedOperationException("Not supported yet.");
        }
     
        public void mouseEntered(MouseEvent e) {
            throw new UnsupportedOperationException("Not supported yet.");
        }
     
        public void mouseExited(MouseEvent e) {
            throw new UnsupportedOperationException("Not supported yet.");
        }
    }
    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
     
    public class PanelDessin extends JPanel{
     
        private ArrayList<Point> listePoints;
        private JFrame parent;
     
        public PanelDessin(JFrame parent) {
            super();
            this.parent = parent;
            listePoints = new ArrayList<Point>();
            this.setSize(700, 600);
            this.setVisible(true);
     
        }
     
        public void ajouterPoint(MouseEvent evt) {
            // on met dans le bon repere
            Point p = evt.getLocationOnScreen();
            p.setLocation(p.getX(), Math.abs(p.getY()-this.getHeight()));
            listePoints.add(p);
        }
     
     
        @Override
        public void paint(Graphics g) {
            super.paint(g);
            g.setColor(Color.red);
            int i =0;
            for (Point p : listePoints) {
                System.out.println("dessin du point "+i+" : "+p);
                g.drawRect(p.x, p.y+this.getHeight(), 5, 5);
                i++;
            }
        }

  2. #2
    Membre Expert Avatar de Ivelios
    Homme Profil pro
    Développeur Java
    Inscrit en
    Juillet 2008
    Messages
    1 031
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur Java

    Informations forums :
    Inscription : Juillet 2008
    Messages : 1 031
    Par défaut
    Utilises paintComponent(Graphics g) au lieu de paint(Graphics g)

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Mars 2009
    Messages
    19
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2009
    Messages : 19
    Par défaut
    j'avais aussi essayé, même problème...

  4. #4
    Membre Expert

    Homme Profil pro
    Responsable des études
    Inscrit en
    Mars 2009
    Messages
    553
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Responsable des études
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2009
    Messages : 553
    Par défaut
    Tu n'aurais pas oublié de faire un
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    addMouseListener(this);
    quelque part ?...

  5. #5
    Membre Expert
    Avatar de slim_java
    Homme Profil pro
    Enseignant
    Inscrit en
    Septembre 2008
    Messages
    2 272
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Enseignant
    Secteur : Enseignement

    Informations forums :
    Inscription : Septembre 2008
    Messages : 2 272
    Par défaut
    salut
    surtout je ne comprend pas pk tu as fais
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    g.drawRect(p.x, p.y+this.getHeight(), 5, 5);
    en plus , tu dois revoir ton cour sur les Listener en Java...

    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
     
    import java.awt.BorderLayout;
    import java.awt.Color;
    import java.awt.Dimension;
    import java.awt.event.MouseEvent;
    import java.awt.event.MouseListener;
     
    import javax.swing.JFrame;
    import javax.swing.border.LineBorder;
     
     
    public class DemoGUI extends JFrame  {
     
        /**
             * 
             */
     
    	private PanelDessin panelDessin;
     
     
        public DemoGUI() {
            super();
            this.setSize(800, 600);
           // this.setResizable(false);
            panelDessin = new PanelDessin(this);
            panelDessin.setMinimumSize(new Dimension(700, 600));
            panelDessin.setBorder(new LineBorder(Color.blue));
            this.getContentPane().add(panelDessin, BorderLayout.CENTER);
            this.setDefaultCloseOperation(DISPOSE_ON_CLOSE);
     
        }
     
     
        public static void main(String args[]) {
            DemoGUI f = new DemoGUI();
            f.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
     
    import java.awt.Color;
    import java.awt.Graphics;
    import java.awt.Graphics2D;
    import java.awt.Point;
    import java.awt.event.ActionEvent;
    import java.awt.event.ActionListener;
    import java.awt.event.MouseEvent;
    import java.awt.event.MouseListener;
    import java.util.ArrayList;
    import javax.swing.JFrame;
    import javax.swing.JPanel;
     
     
    public class PanelDessin extends JPanel implements MouseListener{
     
        private ArrayList<Point> listePoints;
        private JFrame parent;
     
        public PanelDessin(JFrame parent) {
            super();
            this.parent = parent;
            listePoints = new ArrayList<Point>();
            this.setSize(700, 600);
            this.setVisible(true);
            addMouseListener(this);
        }
     
        public void paintComponent(Graphics g) {
        	super.paintComponent(g);
            g.setColor(Color.red);
            int i =0;
            for (Point p : listePoints) {
                System.out.println("dessin du point "+i+" : "+p);
                g.drawRect(p.x, p.y, 5, 5);
                i++;
            }
        }
     
     
    	@Override
    	public void mousePressed(MouseEvent arg0) {
    		// TODO Auto-generated method stub
    		   Point p = arg0.getPoint();
    	        p.setLocation(p.getX(), Math.abs(p.getY()-this.getHeight()));
    	        listePoints.add(p);
    	        repaint();
     
    	}
     
    	public void mouseReleased(MouseEvent arg0) {}
    	public void mouseExited(MouseEvent arg0) {}
    	public void mouseClicked(MouseEvent arg0) {}
    	public void mouseEntered(MouseEvent arg0) {}
    }

  6. #6
    Membre averti
    Profil pro
    Inscrit en
    Mars 2009
    Messages
    19
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2009
    Messages : 19
    Par défaut
    salut,
    merci pour ton aide, ça marche maintenant
    Pour les coordonnées je changeais de repère car c'est plus facile pour les traitements derrière de travailler dans un repère 0,0 en bas à gauche.
    Je me suis peut-être un peu embrouillé avec ça, mais je devrais y arriver

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

Discussions similaires

  1. Geotools et affichage d'un point sur la carte
    Par ICS123 dans le forum SIG : Système d'information Géographique
    Réponses: 11
    Dernier message: 28/06/2009, 10h53
  2. Réponses: 6
    Dernier message: 31/10/2008, 10h37
  3. Recuperer coord du point du clic souris
    Par LotfiB dans le forum OpenGL
    Réponses: 7
    Dernier message: 27/02/2007, 10h20
  4. [MySQL] Affichage auto de champs par clic sur liste déroulante
    Par Mister Shell dans le forum PHP & Base de données
    Réponses: 3
    Dernier message: 20/12/2006, 12h08
  5. [C#] Affichage aleatoire de points ....!?
    Par christophebmx dans le forum Windows Forms
    Réponses: 2
    Dernier message: 16/01/2005, 15h13

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