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 :

Sélectionner une figure dans un JPanel


Sujet :

AWT/Swing Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Nouveau candidat au Club
    Profil pro
    Inscrit en
    Novembre 2007
    Messages
    1
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2007
    Messages : 1
    Par défaut Sélectionner une figure dans un JPanel
    Bonjour à tous,

    Je vais essayer de vous exposer mon problème : en ce moment je suis en train de voir les interfaces graphiques à l'IUT. On a commencé par créer des classes Rectangles, Triangles.... Qui héritent de Figure.

    La première étape consistait à dessiner ces figures sur un JPanel, en l'occurence une classe DessinFigure qui étends JPanel.

    Ca se corse beaucoup ensuite, il faudrait que l'on puisse sélectionner avec la souris une figure qui est dessiné sur le JPanel.
    Je me suis dit qu'il fallait que Figure hérite de JComponent, mais ça n'a rien donné.


    DessinFigure extends JPanel
    Contient une liste de Figure et des classes internes qui implémentent MouseListener, MouseMotionLister et KeyListener.
    La méthodes paint(Graphics) s'occupe d'afficher toute les Figure de la liste.


    abstract Figure extends JComponent
    La méthode paint() dessine des petits carrés sur chaque point de la Figure

    abstract Polygone extends Figure

    Viennent ensuite Rectangle, Triangle et Quadrilatère qui extends Polygone.

    J'ai essayé d'être clair.

    Merci pour toute vos réponses.

    PS : Je suis passé sur un tuto qui utilise la classe Rectangle fourni avec l'API afin de savoir si une figure se trouvent dans un Rectangle donné, et ainsi permettre la sélection. Mais ça me parait un peu "pas terrible" comme méthode.

  2. #2
    Membre Expert Avatar de herve91
    Profil pro
    Inscrit en
    Novembre 2004
    Messages
    1 282
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2004
    Messages : 1 282
    Par défaut
    Il serait judicieux que la classe Figure implémente l'interface java.awt.Shape, qui dispose d'une méthode contains() permettant de savoir si un point est à l'intérieur de la forme géométrique ou non. Tu peux également décrire tes Rectangle, Triangle et Quadrilatere simplement à partir de la classe java.awt.Polygon.
    Pour la sélection de figures, il faut que ton panel écoute les événements souris, et détecte quelle figure contient le point associé à l'événement :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    List<Shape> figures = new ArrayList<Shape>();
    ...
    public void mousePressed(MouseEvent me) {
      Point p = me.getPoint();
      for (Shape figure : figures) {
        if (figure.contains(p)) {
          // l'utilisateur a cliqué dans cette figure
        }
      }
    }

Discussions similaires

  1. [JPanel]Mettre une image dans un JPanel
    Par ehmppowa dans le forum Composants
    Réponses: 11
    Dernier message: 30/11/2005, 20h17
  2. Sélectionner une valeur dans un RxDBLookupCombo
    Par Oluha dans le forum Bases de données
    Réponses: 2
    Dernier message: 22/09/2005, 09h10
  3. Comment sélectionner une ligne dans une TStringGrid ?
    Par Ben_Le_Cool dans le forum Composants VCL
    Réponses: 11
    Dernier message: 22/08/2005, 12h38
  4. [DB2] Sélectionner une ligne dans une SP
    Par Fatah93 dans le forum DB2
    Réponses: 4
    Dernier message: 25/05/2005, 14h52
  5. Sélectionner une ligne dans une DBGrid
    Par RBIK dans le forum Bases de données
    Réponses: 13
    Dernier message: 01/07/2004, 17h13

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