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 :

[Java2D] mouseDragged dans un JPanel


Sujet :

Agents de placement/Fenêtres Java

  1. #1
    Membre à l'essai
    Inscrit en
    Mars 2005
    Messages
    20
    Détails du profil
    Informations forums :
    Inscription : Mars 2005
    Messages : 20
    Points : 14
    Points
    14
    Par défaut [Java2D] mouseDragged dans un JPanel
    Bonjour à tous.

    Voila, j'ai fait une interface graphique qui dessine différents objets dans un jPanel. Un premier problème est survenu lorsque je mettais dans la fenêtre (qui est un JDialog), le JPanel contenant le dessin, l'arrière plan n'était pas correct. Pour résoudre cela, j'ai simplement ajouté un JPanel à ma fenêtre de départ, puis à ce JPanel j'ai ajouté le panel contenant le dessin. Le dessin s'affiche correctement, l'arrière plan est correct.

    Maintenant, je voudrais pouvoir sélectionner les objets dessinés dans mon jpanel, grâce à la souris, pour cela, j'ai simplement besoin des coordonnées du point de départ de la souris quand on a cliqué sur celle-ci et les coordonnées du point quand le bouton de la souris a été relâché.
    J'ai essayé avec un mouseClicked() et un mouseDragged() à divers endroit possible mais rien ne marche.


    Vous pourriez m'aider?? Merci d'avance pour votre aide

  2. #2
    Membre confirmé
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    429
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2005
    Messages : 429
    Points : 475
    Points
    475
    Par défaut
    Bonjour,

    Je suis surpris par ce que tu dis. Tu trouveras ci-dessous un exemple, inspiré d'un livre. Le paint() avec les instructions 2D et le listener sont dans un JComponent. Ce dernier est ajouté à une JDialog. (Appuyer sur le bouton de la souris pour faire tourner l'image.)

    Si cela ne répond pas à ton souci, précise mieux ce dernier.

    Nicolas

    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
    // appeler le fichier Exemple046_2D_Iguana.java
     
    import java.awt.*;
    import java.awt.event.*;
    import java.awt.geom.*;
    import javax.swing.*;
     
    // adaptation d'un exemple d'un guide Java des éditions O'Reilly
     
    public class Exemple046_2D_Iguana extends JComponent {
     
        private int theta;
     
        public Exemple046_2D_Iguana() {
            theta = 0;
            addMouseListener(new MouseAdapter() {
                public void mousePressed(MouseEvent me) {
                    theta = (theta + 15) % 360;
                    repaint();
                }
            }
            );
        }
     
        public void paint(Graphics g) {
            Graphics2D g2 = (Graphics2D) g;
            g2.setRenderingHint(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON);
     
            int cx = getSize().width / 2;
            int cy = getSize().height / 2;
            g2.translate(cx, cy);
            g2.rotate(theta * Math.PI / 180);
     
            Shape oldClip = g2.getClip();
            Shape e = new Ellipse2D.Float(-cx, -cy, cx*2, cy*2);
            g2.clip(e);
     
            Shape c = new Ellipse2D.Float(-cx, -cy, cx*3/4, cy*2);
            g2.setPaint(new GradientPaint(40, 40, Color.blue, 60, 50, Color.white, true));
            g2.fill(c);
     
            g2.setPaint(Color.yellow);
            g2.fillOval(cx/4, 0, cx, cy);
     
            g2.setClip(oldClip);
     
            g2.setFont(new Font("Times New Roman", Font.PLAIN, 64));
            g2.setPaint(new GradientPaint(-cx, 0, Color.red, cx, 0, Color.black, false));
            g2.drawString("Hello, 2D!", -cx*3/4, cy/4);
     
            AlphaComposite ac = AlphaComposite.getInstance(AlphaComposite.SRC_OVER, (float) 0.75);
            g2.setComposite(ac);
     
            Shape r = new RoundRectangle2D.Float(0, -cy*3/4, cx*3/4, cy*3/4, 20, 20);
            g2.setStroke(new BasicStroke(4));
            g2.setPaint(Color.magenta);
            g2.fill(r);
            g2.setPaint(Color.green);
            g2.draw(r);
        }
     
        public static void main(String[] args) {
            JDialog jd = new JDialog();
            Container c = jd.getContentPane();
            c.setLayout(new BorderLayout());
            c.add(new Exemple046_2D_Iguana(), BorderLayout.CENTER);
            jd.setSize(300,300);
            jd.setVisible(true);
        }
    }

  3. #3
    Membre à l'essai
    Inscrit en
    Mars 2005
    Messages
    20
    Détails du profil
    Informations forums :
    Inscription : Mars 2005
    Messages : 20
    Points : 14
    Points
    14
    Par défaut
    Désolé je me suis mal exprimé.

    Ce que je voudrai faire c'est de pouvoir sélectionner sous groupe de dessins (qui ne doivent pas bouger) pour leurs appliquer une modification commune (ex : la couleur).Un peu comme sous de Windows, ou l'on peut sélectionner plusieurs icônes en un "glissement" de souris.

    Tu vois ce que je veux faire? Merci quand même

  4. #4
    Membre habitué
    Homme Profil pro
    Chef de projet NTIC
    Inscrit en
    Juin 2005
    Messages
    175
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Chef de projet NTIC

    Informations forums :
    Inscription : Juin 2005
    Messages : 175
    Points : 145
    Points
    145
    Par défaut
    au lieu de mouseclicked, utilise mousepressed, tu sauvegarde les coordonnées. et au mousereleased, tu selectionne (par une focntion que tu dois coder of course) les composnats qui sont dans le rectangle formé par les deux points "pressed" et "released".

    tu peu aussi afficher ce rectangle de seletion en "temps réel" avec mousedragged, en faisant un repaint a chaque fois que ca dragg.

    je ne sais pas si j'ai été clair, mais j'utilise c principe dans un de mes progs et ca marche.

  5. #5
    Membre à l'essai
    Inscrit en
    Mars 2005
    Messages
    20
    Détails du profil
    Informations forums :
    Inscription : Mars 2005
    Messages : 20
    Points : 14
    Points
    14
    Par défaut
    Merci bcp, tu as été claire, je vais tester ça et vous dire quoi.
    Merci bcp

  6. #6
    Membre à l'essai
    Inscrit en
    Mars 2005
    Messages
    20
    Détails du profil
    Informations forums :
    Inscription : Mars 2005
    Messages : 20
    Points : 14
    Points
    14
    Par défaut
    rebonjour à tous, je viens de trouver mon problème. Il se fait que j'ai des autre fenetre jDialog d'ouverte au même moment et qu'il ne veut pas me donner la main sur ma fenetre de dessin car elle sont modal.

    en tout cas merci pour tout à tous

  7. #7
    Membre habitué
    Homme Profil pro
    Chef de projet NTIC
    Inscrit en
    Juin 2005
    Messages
    175
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Chef de projet NTIC

    Informations forums :
    Inscription : Juin 2005
    Messages : 175
    Points : 145
    Points
    145
    Par défaut
    j'avoue que je ne vois pas le rapport, mais bon l'important c'est que tu ai résolu ton problème.

    ps: pense au tag résolu.

  8. #8
    Membre à l'essai
    Inscrit en
    Mars 2005
    Messages
    20
    Détails du profil
    Informations forums :
    Inscription : Mars 2005
    Messages : 20
    Points : 14
    Points
    14
    Par défaut
    En fait, si tu veux j'avais d'abord une JDialog qui appel cette fenetre, cependant la JDialog était en Modal(true) et bien que la fenetre de dessin etait selectionné (en même temps que la JDialog), je n'avais pas acces à cette fenetre.
    Du moins c'est comme ça que je comprends les choses

    Merci quand même

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

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. [JPanel] placement d'un texte dans un JPanel
    Par ehmppowa dans le forum Agents de placement/Fenêtres
    Réponses: 3
    Dernier message: 25/11/2005, 14h26
  3. Dessiner dans différents JPanels
    Par N@sH dans le forum Agents de placement/Fenêtres
    Réponses: 2
    Dernier message: 20/05/2005, 15h39
  4. [JPanel] parcours d'objets dans un JPanel
    Par fleur1234 dans le forum Agents de placement/Fenêtres
    Réponses: 3
    Dernier message: 17/01/2005, 13h24
  5. Dessiner dans un JPanel
    Par Oliveuh dans le forum Composants
    Réponses: 5
    Dernier message: 19/07/2004, 12h13

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