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ébutant] Interragir en cliquant sur paintComponent


Sujet :

AWT/Swing Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Homme Profil pro
    BTS IRIS
    Inscrit en
    Mai 2014
    Messages
    68
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 31
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : BTS IRIS
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Mai 2014
    Messages : 68
    Par défaut [Débutant] Interragir en cliquant sur paintComponent
    Bonjour, je souhaiterais interagir avec une animation que j'ai créer afin de m’entraîner dans le langage Java. Voici exactement à quoi ressemble le programme.

    Nom : sdz62.png
Affichages : 102
Taille : 10,8 Ko

    Ce que je souhaiterais faire avec ce programme c'est dès lors que je click sur la "balle" une Dialog box s'ouvre envoyant un message.

    Je me doute que cela s'effectue grâce aux MouseListener.

    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
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    import java.awt.BorderLayout;
    import java.awt.Color;
    import java.awt.event.ActionEvent;
    import java.awt.event.ActionListener;
    import java.awt.event.MouseEvent;
    import java.awt.event.MouseListener;
     
    import javax.swing.JButton;
    import javax.swing.JFrame;
    import javax.swing.JOptionPane;
    import javax.swing.JPanel;
     
    public class Fenetre3 extends JFrame implements MouseListener{
      /**
         *
         */
     
        private static final long serialVersionUID = 1L;
     
        private Pananimation pan2 = new Pananimation();
     
      private JButton btnnext2 = new JButton("NEXT");
      private JPanel container2 = new JPanel();
     
      public Fenetre(){
        this.setTitle("Appli");
        this.setSize(300, 300);
        this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        this.setLocationRelativeTo(null);
        container2.setBackground(Color.white);
        container2.setLayout(new BorderLayout());
        container2.add(pan2, BorderLayout.CENTER);
        container2.add(btnnext2, BorderLayout.SOUTH);
        this.setContentPane(container2);
        this.setVisible(true);   
        go(); 
     
        this.addMouseListener(this);
      }
     
      private void go(){ 
        //Les coordonnées de départ de notre rond
        int x = pan2.getX(), y = pan2.getY();
        //Le booléen pour savoir si l'on recule ou non sur l'axe x
        boolean backX = false;
        //Le booléen pour savoir si l'on recule ou non sur l'axe y
        boolean backY = false;
        try {
            // Pause pour simuler un traitement
            Thread.sleep(100);
        } catch (InterruptedException e) {}
     
     
        //Dans cet exemple, j'utilise une boucle while
        //Vous verrez qu'elle fonctionne très bien
        while(true){
          //Si la coordonnée x est inférieure à 1, on avance
          if(x < 1)backX = false;
          //Si la coordonnée x est supérieure à la taille du Panneau moins la taille du rond, on recule
          if(x > pan2.getWidth()-50)backX = true;
          //Idem pour l'axe y
          if(y < 1)backY = false;
          if(y > pan2.getHeight()-50)backY = true;
     
          //Si on avance, on incrémente la coordonnée
          if(!backX)
            pan2.setPosX(++x);
          //Sinon, on décrémente
          else
            pan2.setPosX(--x);
          //Idem pour l'axe Y
          if(!backY)
            pan2.setPosY(++y);
          else
            pan2.setPosY(--y);
     
          //On redessine notre Panneau
          pan2.repaint();
     
          //Comme on dit : la pause s'impose ! Ici, trois millièmes de seconde
          try {
            Thread.sleep(1);
          } catch (InterruptedException e) {
            e.printStackTrace();
          }
          btnnext2.addActionListener(new ActionListener(){
     
            @Override
            public void actionPerformed(ActionEvent e) {
                    dispose();
                    Fenetre4 fen4 = new Fenetre4(
                            );
                }  
        });
        }
      }
     
    @Override
    public void mouseClicked(MouseEvent e) {
        JOptionPane.showMessageDialog(null," mouseClicked ","Information",JOptionPane.INFORMATION_MESSAGE);<br>
    }
     
    @Override
    public void mousePressed(MouseEvent e) {
        JOptionPane.showMessageDialog(null,"mousePressed","Information",JOptionPane.INFORMATION_MESSAGE);
     
    }
     
    @Override
    public void mouseReleased(MouseEvent e) {
        // TODO Auto-generated method stub
     
    }
     
    @Override
    public void mouseEntered(MouseEvent e) {
        // TODO Auto-generated method stub
     
    }
     
    @Override
    public void mouseExited(MouseEvent e) {
        // TODO Auto-generated method stub
     
    }
    Si quelqu'un peut m'aider ce serait sympa !

  2. #2
    Membre éclairé
    Homme Profil pro
    Ingénieur de construction de réseaux
    Inscrit en
    Août 2012
    Messages
    406
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Cameroun

    Informations professionnelles :
    Activité : Ingénieur de construction de réseaux
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Août 2012
    Messages : 406
    Par défaut
    Citation Envoyé par kewti Voir le message
    Bonjour, je souhaiterais interagir avec une animation que j'ai créer afin de m’entraîner dans le langage Java. Voici exactement à quoi ressemble le programme.

    Nom : sdz62.png
Affichages : 102
Taille : 10,8 Ko

    Ce que je souhaiterais faire avec ce programme c'est dès lors que je click sur la "balle" une Dialog box s'ouvre envoyant un message.

    Je me doute que cela s'effectue grâce aux MouseListener.

    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
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    import java.awt.BorderLayout;
    import java.awt.Color;
    import java.awt.event.ActionEvent;
    import java.awt.event.ActionListener;
    import java.awt.event.MouseEvent;
    import java.awt.event.MouseListener;
     
    import javax.swing.JButton;
    import javax.swing.JFrame;
    import javax.swing.JOptionPane;
    import javax.swing.JPanel;
     
    public class Fenetre3 extends JFrame implements MouseListener{
      /**
         *
         */
     
        private static final long serialVersionUID = 1L;
     
        private Pananimation pan2 = new Pananimation();
     
      private JButton btnnext2 = new JButton("NEXT");
      private JPanel container2 = new JPanel();
     
      public Fenetre(){
        this.setTitle("Appli");
        this.setSize(300, 300);
        this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        this.setLocationRelativeTo(null);
        container2.setBackground(Color.white);
        container2.setLayout(new BorderLayout());
        container2.add(pan2, BorderLayout.CENTER);
        container2.add(btnnext2, BorderLayout.SOUTH);
        this.setContentPane(container2);
        this.setVisible(true);   
        go(); 
     
        this.addMouseListener(this);
      }
     
      private void go(){ 
        //Les coordonnées de départ de notre rond
        int x = pan2.getX(), y = pan2.getY();
        //Le booléen pour savoir si l'on recule ou non sur l'axe x
        boolean backX = false;
        //Le booléen pour savoir si l'on recule ou non sur l'axe y
        boolean backY = false;
        try {
            // Pause pour simuler un traitement
            Thread.sleep(100);
        } catch (InterruptedException e) {}
     
     
        //Dans cet exemple, j'utilise une boucle while
        //Vous verrez qu'elle fonctionne très bien
        while(true){
          //Si la coordonnée x est inférieure à 1, on avance
          if(x < 1)backX = false;
          //Si la coordonnée x est supérieure à la taille du Panneau moins la taille du rond, on recule
          if(x > pan2.getWidth()-50)backX = true;
          //Idem pour l'axe y
          if(y < 1)backY = false;
          if(y > pan2.getHeight()-50)backY = true;
     
          //Si on avance, on incrémente la coordonnée
          if(!backX)
            pan2.setPosX(++x);
          //Sinon, on décrémente
          else
            pan2.setPosX(--x);
          //Idem pour l'axe Y
          if(!backY)
            pan2.setPosY(++y);
          else
            pan2.setPosY(--y);
     
          //On redessine notre Panneau
          pan2.repaint();
     
          //Comme on dit : la pause s'impose ! Ici, trois millièmes de seconde
          try {
            Thread.sleep(1);
          } catch (InterruptedException e) {
            e.printStackTrace();
          }
          btnnext2.addActionListener(new ActionListener(){
     
            @Override
            public void actionPerformed(ActionEvent e) {
                    dispose();
                    Fenetre4 fen4 = new Fenetre4(
                            );
                }  
        });
        }
      }
     
    @Override
    public void mouseClicked(MouseEvent e) {
        JOptionPane.showMessageDialog(null," mouseClicked ","Information",JOptionPane.INFORMATION_MESSAGE);<br>
    }
     
    @Override
    public void mousePressed(MouseEvent e) {
        JOptionPane.showMessageDialog(null,"mousePressed","Information",JOptionPane.INFORMATION_MESSAGE);
     
    }
     
    @Override
    public void mouseReleased(MouseEvent e) {
        // TODO Auto-generated method stub
     
    }
     
    @Override
    public void mouseEntered(MouseEvent e) {
        // TODO Auto-generated method stub
     
    }
     
    @Override
    public void mouseExited(MouseEvent e) {
        // TODO Auto-generated method stub
     
    }
    Si quelqu'un peut m'aider ce serait sympa !
    A mon avis tu devrais ajouter le Listener à la balle et non à la fenêtre ce sera plus simple ainsi.

  3. #3
    Membre confirmé
    Homme Profil pro
    BTS IRIS
    Inscrit en
    Mai 2014
    Messages
    68
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 31
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : BTS IRIS
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Mai 2014
    Messages : 68
    Par défaut
    Merci pour t'as réponse

  4. #4
    Expert éminent
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 482
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 482
    Par défaut
    Tu met un mouseListener sur le panneau affichant la balle. A partir du x/y de l'event souris, tu dois pouvoir déterminer si c'est dans la balle ou pas, puisque tu as la position de la balle (posX/posY) et son rayon.

    Accessoirement, tu ajoute un listener dans ton while(true). Tu imagine bien après 5 minutes d'animation combien de centaines de listeners sont enregistrés pour btnnext2 ?

  5. #5
    Membre confirmé
    Homme Profil pro
    BTS IRIS
    Inscrit en
    Mai 2014
    Messages
    68
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 31
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : BTS IRIS
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Mai 2014
    Messages : 68
    Par défaut
    Je souhaite simplement que lorsque la souris click sur la balle on puisse envoyez une DialogBox

  6. #6
    Membre éclairé
    Homme Profil pro
    Ingénieur de construction de réseaux
    Inscrit en
    Août 2012
    Messages
    406
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Cameroun

    Informations professionnelles :
    Activité : Ingénieur de construction de réseaux
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Août 2012
    Messages : 406
    Par défaut
    Citation Envoyé par kewti Voir le message
    Je souhaite simplement que lorsque la souris click sur la balle on puisse envoyez une DialogBox
    On avait compris fait ce qu'on te dis et dis nous où tu rencontres des problèmes

  7. #7
    Membre éclairé
    Homme Profil pro
    Ingénieur de construction de réseaux
    Inscrit en
    Août 2012
    Messages
    406
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Cameroun

    Informations professionnelles :
    Activité : Ingénieur de construction de réseaux
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Août 2012
    Messages : 406
    Par défaut
    Citation Envoyé par tchize_ Voir le message
    Tu met un mouseListener sur le panneau affichant la balle. A partir du x/y de l'event souris, tu dois pouvoir déterminer si c'est dans la balle ou pas, puisque tu as la position de la balle (posX/posY) et son rayon.

    Accessoirement, tu ajoute un listener dans ton while(true). Tu imagine bien après 5 minutes d'animation combien de centaines de listeners sont enregistrés pour btnnext2 ?
    As-tu appliqué ces directives?

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

Discussions similaires

  1. Réponses: 19
    Dernier message: 16/04/2009, 08h36
  2. [débutant] afficher une JFrame en cliquant sur un bouton
    Par 7rouz dans le forum Agents de placement/Fenêtres
    Réponses: 5
    Dernier message: 07/03/2007, 11h22
  3. [Débutant] Tester une connection sur bdd
    Par lando dans le forum Servlets/JSP
    Réponses: 3
    Dernier message: 03/09/2003, 14h37
  4. [Kylix] Demarrer en cliquant sur l'executable ???
    Par Anonymous dans le forum EDI
    Réponses: 2
    Dernier message: 26/04/2002, 11h24

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