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

Agents de placement/Fenêtres Java Discussion :

Ecouter un objet quelconque


Sujet :

Agents de placement/Fenêtres Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2013
    Messages
    11
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Industrie

    Informations forums :
    Inscription : Mai 2013
    Messages : 11
    Par défaut Ecouter un objet quelconque
    Bonjour, je vous présente rapidement mon projet avant d'entrer dans le vif du sujet :
    En gros c'est refaire un paint, très grossièrement bien sur, donc j'ai une classe Dessin, qui est mon JPanel, qui contient une liste de forme à dessiner, une classe Fenetre, qui est ma JFrame, une classe Forme, chaque forme est définie par un tableau de point à "relier" pour les dessin, donc avec g.drawPolygon, ...
    Et chaque point est aussi dessiné pour être visible et donc cliquable, il est dessiné par un drawPolygon, que j'ai défini, par une zone de 6 pixel de coté autour du point.

    Mon problème est que je voudrais écouter cette partie du point qui est dessiné, pour pouvoir déplacer le point avec la souris.
    Mais lorsque je j'implémente un mouseListener, tout le JPanel est réceptif aux action, donc peut-importe où je clique "Test" s'affiche (c'était un SOP que j'avais mit pour tester hein )

    Une capture pour vous montrer à quoi ressemble ma fenêtre :



    Merci d'avance à tous !

  2. #2
    Membre chevronné
    Homme Profil pro
    Inscrit en
    Janvier 2010
    Messages
    312
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Janvier 2010
    Messages : 312
    Par défaut
    Bonjour,

    Une idée simple serait de ne pas dessiner tes points dans paintComponent mais de créer une classe étendant JPanel de la taille d'un point.

    Tu peux alors afficher des instances de cette classe avec setBounds() ou setLocation() et tu veux également mettre un mouseListener dessus.

  3. #3
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2013
    Messages
    11
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Industrie

    Informations forums :
    Inscription : Mai 2013
    Messages : 11
    Par défaut
    Mes points ne sont actuellement extends de rien du tout, donc tu me proposes de mettre extends JPanel sur les points, et d'appeller la méthode setBounds(x, y, width, height)

    Et en plus de l'extends JPanel, implementer MouseListener, et dans mon JPanel principal ajouter addMouseListener(point) pour chaque point ?

    Edit : C'est ce que je viens de tenter, j'ai mit mon point en JComponent (ou JPanel, j'ai essayé les deux ça revient au même), implements MouseListener
    Dans mouseClicked() { System.out.println("Test"); }

    Dans ma méthode de dessin :
    SetBounds(x, y, 5, 5);
    g.drawRect(x, y, 5, 5);

    Pour chaque point dans mon JPanel addMouseListener(point);

    Et résultat, peut importe où je clique ça affiche 3 fois Test (Pour un triangle)

  4. #4
    Membre chevronné
    Homme Profil pro
    Inscrit en
    Janvier 2010
    Messages
    312
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Janvier 2010
    Messages : 312
    Par défaut
    Tes formes restent dessinées dans paintComponent mais tes points que tu veux bouger seront en réalité des JPanel.

    tu crees une classe Points qui étend JPanel.

    tu passes en parametre le JPanel(panel) sur lequel tu va dessiner pour pouvoir ajouter à la construction de chaque point un MouseMotionListener(panel)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    public class Points extends JPanel  {
     
            int x,y;
            public Points(int x,int y,JPanel panel) {
                     this.x = x;
                     this.y = y;
                     addMouseMotionListener(panel);
                     setBackground(Color.black);
                     setBounds(x-2,y-2,5,5);//en supposant que ton point face 5 sur 5
            }
    }
    ensuite dans panel qui devra donc implementer MouseMotionListener tu utilises mouseDragged() pour bouger tes points

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    public void mouseMoved(MouseEvent e) {
     
    }
     
    public void mouseDragged(MouseEvent e) {
              Points p = (Points)e.getSource();
              p.setLocation(e.getX(),e.getY());
              //pas besoin de repaint car setLocation induit automatiquement un repaint
    }

  5. #5
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2013
    Messages
    11
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Industrie

    Informations forums :
    Inscription : Mai 2013
    Messages : 11
    Par défaut
    Ahh ça marche !!!!

    Mille merci ! Depuis le temps que je planche dessus !!!


    Enfin je n'arrive pas a déplacer, mais ce n'est qu'un problème de structure... Il faut que j'identifie le point pour remplacer le bon

    Edit : C'est ok, tout marche !

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

Discussions similaires

  1. QTreeWidgetItem setData mettre objet quelconque
    Par guillaume07 dans le forum Qt
    Réponses: 4
    Dernier message: 19/04/2010, 13h44
  2. Affichage d'objets quelconques
    Par ploxien dans le forum Langage
    Réponses: 4
    Dernier message: 03/05/2007, 09h05
  3. [XAML] Action sur un objet quelconque
    Par Belgarath Le Sorcier dans le forum Windows Presentation Foundation
    Réponses: 4
    Dernier message: 04/01/2007, 20h11
  4. [Code Source]Connaitre la taille en ko d'un objet quelconque ?
    Par Melchisedec dans le forum Général Java
    Réponses: 4
    Dernier message: 19/06/2006, 13h46
  5. Peut-on stocker un objet quelconque dans vector
    Par chrono23 dans le forum SL & STL
    Réponses: 30
    Dernier message: 18/06/2006, 12h54

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