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 :

Déplacement (avec la souris) des composants dessinés


Sujet :

AWT/Swing Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    Ingénieur de construction de réseaux
    Inscrit en
    Avril 2011
    Messages
    17
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur de construction de réseaux
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Avril 2011
    Messages : 17
    Par défaut Déplacement (avec la souris) des composants dessinés
    Bonjour help SVP, je ne vais pas passer par 4 chemins car je méga-bloque voilà :

    J'ai une classe contenant une méthode qui me tracer un cercle à chaque fois que je l'appelle; elle est ici cette classe :

    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
    public abstract class Affiche_TStation extends JPanel implements MouseInputListener{
        
        private static final long serialVersionUID = 1L;
        public int CrdX,CrdY,LRayon;
        int  u,v,w;
        int ma_matrice[][];
    
        public Affiche_TStation(){
            this.CrdX = CrdX;
            this.CrdY = CrdY;
            this.LRayon = LRayon;   
        }
        
        //******************************************************
        public int getCrdX(){
            return CrdX;
        }
        public void setCrdX(int CrdX){
            this.CrdX = CrdX;
        }
        //*******************************************************
        public int getCrdY(){
            return CrdY;
        }
        public void setCrdY(int CrdY){
            this.CrdY = CrdY;
        }
        //********************************************************    
        public int getLRayon(){
            return LRayon;
        }
        public void setLRayon(int LRayon){
            this.LRayon = LRayon;
        }
        //********************************************************
        
        public void tracer_cercle(int X, int Y, int Rayon, BufferedImage BfrImg){
            Graphics2D g = (Graphics2D)BfrImg.getGraphics(); 
            g.setComposite(AlphaComposite.getInstance(AlphaComposite.SRC_OVER, 0.4f ));
            g.setColor(Color.blue);
            g.fillOval(X, Y, Rayon, Rayon);                            
            g.setColor(Color.red);      
            g.fillRect(((X+(Rayon/2))-(Rayon/20)), ((Y+(Rayon/2))-(Rayon/20)), Rayon/10, Rayon/10);
            //stockage des coord ici peut être ???
            setCrdX(X);
            setCrdY(Y);
            setLRayon(Rayon);
            //stocke_stations(X,Y,Rayon);
        }
        
    }
    Une deuxème classe qui en fait une frame, dans laquelle j'appelle la méthode trace cercle, voici des bouts de cette classe (car llongue quand même)

    Le traceur :

    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
    traceur = new Affiche_TStation() {
                
                private static final long serialVersionUID = 1L;
                
                public void init(){
                    addMouseListener(this);
                    addMouseMotionListener(this);
                }
    
                @Override
                public void mousePressed(MouseEvent e){
                    CrdX = e.getX();
                    CrdY = e.getY();
                    tracer_cercle(CrdX,CrdY,S,BfrImage);
                    //repaint();
                }
                
                @Override
                public void mouseDragged(MouseEvent e){
                    if(contains(e.getX(), e.getY())){
                        CrdX = e.getX();
                        CrdY = e.getY();
                        tracer_cercle(CrdX,CrdY,S,BfrImage);
                        //repaint();
                    }
                }
                
    }
    Et enfin le bouton qui m'aide à tracer ici :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    bouton.addActionListener(new ActionListener() {
              // Blabla
                                traceur.tracer_cercle(a,b,S,BfrImage); 
                            }
            );
    Quand j'execute, mes cercles sont dessinés, seulement voilà que ma fenetre faite comme si elle n'avait pas d'écouteurs, càd que quand je clique sur le cercle pour le deplacer, rien ne se passe.

    Avez-vous une idée SVP ?

  2. #2
    Modérateur
    Avatar de XxArchangexX
    Homme Profil pro
    Conseil - Consultant en systèmes d'information
    Inscrit en
    Mars 2012
    Messages
    1 159
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France

    Informations professionnelles :
    Activité : Conseil - Consultant en systèmes d'information
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Mars 2012
    Messages : 1 159
    Par défaut
    Bonjour,

    Pour te simplifier la vie, un conseil, fait une JFrame de base et dedans met un JPanel zoneDeDessin, et ton mouseListener dans une classe à part se sera plus lisible^_^°.

    Deuxièment, pour ton problème , si j'ai bien compris tu dessines tes cercles sur la JFrame met à aucun moment tu ne stockes en mémoire ton cercle donc tu ne peux plus le manipuler après. Il faut que qu'il soit en mémoire.Des objets Cercle (ArrayList<Cercle> par exemple), ensuite dans ta frame tu fais un For(x: tableauCercle) draw(x). Ainsi quand tu cliques sur ta JFrame tu prends les x et y et tu parcours ton tableau et

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    if tab.get(i).getX()== e.getX() && tab tab.get(i).getY()== e.getY()
    alors le clique est dans un cercle tu prend l'objet et un setPosition et tu refresh

    remarque : je suis peut être un peu flou ^_^°, c'est un projet que j'ai chez moi, si tu es toujours bloqué je pourrais mieux t'aider ce soir.
    L'Etat est bien administré quand l'escalier de l'école est usé et que l'herbe croît sur celui du tribunal.

    Modérateur BI

  3. #3
    Membre averti
    Homme Profil pro
    Ingénieur de construction de réseaux
    Inscrit en
    Avril 2011
    Messages
    17
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur de construction de réseaux
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Avril 2011
    Messages : 17
    Par défaut
    Citation Envoyé par XxArchangexX Voir le message
    remarque : je suis peut être un peu flou ^_^°, c'est un projet que j'ai chez moi, si tu es toujours bloqué je pourrais mieux t'aider ce soir.
    Super merci de ta réponse.

    Au fait, je me rends compte qu'on avait déjà discuté sur le même projet, sur le stockage des Cercles justement. <Je comptais essayer ta pister avec un array ce soir>
    Par ailleurs, je suis vraiment preneur, si tu peux m'accorder un peu de temps ce soir ? je serai dispo sur le forum et on en reparle if possible.

    Merci d'avance.

    PS : mon mail : rufytho@yahoo.fr

Discussions similaires

  1. toujours avec les problemes des composants IBX
    Par aimer_Delphi dans le forum Bases de données
    Réponses: 5
    Dernier message: 05/10/2011, 18h27
  2. Réponses: 0
    Dernier message: 27/09/2007, 02h59
  3. Déplacement avec la souris dans un JScrollPane/JPanel
    Par deadstar62 dans le forum AWT/Swing
    Réponses: 1
    Dernier message: 27/04/2007, 17h10
  4. [JavaScript-Divs-Fenêtres] Déplacement avec la souris
    Par dontDeleteMe dans le forum Général JavaScript
    Réponses: 1
    Dernier message: 09/02/2007, 16h58
  5. problème avec ma palette des composants
    Par korntex5 dans le forum Delphi
    Réponses: 4
    Dernier message: 10/08/2006, 13h35

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