Derniers sujets
Reconnaissance & utilisation de la souris en Java
SOS internautes :: Aide informatique :: :: Programmation :: JAVA
Page 1 sur 1
Reconnaissance & utilisation de la souris en Java
Que cela soit pour un jeu ou un logiciel utilitaire, l'utilisation de la souris est plus qu'obligatoire pour pouvoir interagir avec son programme. Il est très facile de faire reconnaître la souris à un Applet ou un Panel en Java et il est également très facile par la suite ainsi d'utiliser la souris dans son application.
Je vais donc ici vous expliquer comment procéder pour inclure la gestion de la souris en Java dans vos logiciels que vous programmez.
Pour commencez, si vous vous rappelez du tutoriel que j'ai fait à propos de la gestion du clavier en Java, vous ne serez pas surpris de la bibliothèque que vous devrez importer puisqu'il s'agit de la même, importez donc, via la ligne de code suivante, cette bibliothèque au début de votre classe :
Ensuite, nous allons rajouter ce qui va permettre à votre logiciel de reconnaître la souris, si pour le clavier cela s'appelait un KeyListener, cela ne vous étonneras pas que pour la souris cela s'appelle un MouseListener. (Note : on peut également utiliser un MouseMotionListener pour approfondir les contrôles mais cela ne sera pas expliqué ici dans un premier temps)
Pour ce faire, imaginons que vous travailliez dans un JPanel vous devriez logiquement avoir ceci après l'import des bibliothèques :
Si votre JPanel se nomme donc "Level_1" (en l’occurrence dans mon projet il s'appelle comme ça )
Rajoutez donc à la suite la ligne de code suivante :
Vous obtiendrez donc la ligne de code suivante :
(Note, au cas où d'autres choses sont déjà implémentées, il vous suffit de rajouter une virgule après un KeyListener par exemple et de rajouter le MouseListener)
Vous aurez ensuite toute la partie où vous déclarez vos variables, dans la suite (le init dans un Applet, l’endroit où vous définissez vos variables) , de la même manière que pour le clavier, rajoutez la ligne de code suivante :
Et voilà, votre JPanel reconnaît désormais votre souris... ou plutôt est à même de le faire, si vous compilez maintenant il y aura des erreurs puisqu'il manque les classes de gestion de la souris, nous allons donc les rajouter, il s'agit des lignes suivantes :
mousePressed sert à faire une action dès que vous cliquez à un endroit, mouseReleased détecte le moment quand vous lâchez le bouton, mouseClicked détecte un clic entier (clic + relâchement du bouton) et mouseEntered lorsque le curseur entre dans la fenêtre du logiciel.
Il en existe de nombreuses autres, personnellement pour les petits projets ne nécessitant pas d'être super précis absolument, la classe mousePressed est la plus facile et immédiate à utiliser.
En l'occurrence, maintenant votre JPanel détecte les clics de souris, il ne vous reste plus qu'à rajouter 2 lignes de codes et 2 variables. Définissez donc 2 variables du nom de vous voudrez (je les appelle personnellement K1 et K2 pour "Klic1" et 2 mais faîtes comme vous voudrez ), elles serviront à donner une valeur en pixel à l'endroit où vous avez cliqué sur votre fenêtre.
Ces deux variables définies, rajoutez désormais les 2 lignes suivantes dans la classe que vous souhaitez utiliser ( mousePressed donc si vous voulez commencer par aller au plus simple) :
Et voilà, avec ça vous pouvez désormais TOUT faire avec votre souris, il ne vous suffit plus qu'à travailler avec des if et autres boucles pour détecter des clics sur certaines zones mais vous avez désormais tout en main pour utiliser la souris pour une utilisation standard évidemment puisqu'il existe beaucoup de possibilités plus compliquées encore, mais je pense que cela suffit pour un début.
Encore une petite note, si vous voulez, par exemple, déterminez sur quelle case d'un tableau l'utilisateur a cliqué, il vous suffit de diviser la valeur de K1 par la taille de la case en X et la valeur de K2 par la taille de la case en Y
Petite astuce en passant qui permet de gérer le clic sur n'importe quelle case d'un tableau en 3 lignes de codes, ce qui facilite grandement les choses.
Je vais donc ici vous expliquer comment procéder pour inclure la gestion de la souris en Java dans vos logiciels que vous programmez.
Pour commencez, si vous vous rappelez du tutoriel que j'ai fait à propos de la gestion du clavier en Java, vous ne serez pas surpris de la bibliothèque que vous devrez importer puisqu'il s'agit de la même, importez donc, via la ligne de code suivante, cette bibliothèque au début de votre classe :
- Code:
import java.awt.event.*;
Ensuite, nous allons rajouter ce qui va permettre à votre logiciel de reconnaître la souris, si pour le clavier cela s'appelait un KeyListener, cela ne vous étonneras pas que pour la souris cela s'appelle un MouseListener. (Note : on peut également utiliser un MouseMotionListener pour approfondir les contrôles mais cela ne sera pas expliqué ici dans un premier temps)
Pour ce faire, imaginons que vous travailliez dans un JPanel vous devriez logiquement avoir ceci après l'import des bibliothèques :
- Code:
public class Level_1 extends JPanel
Si votre JPanel se nomme donc "Level_1" (en l’occurrence dans mon projet il s'appelle comme ça )
Rajoutez donc à la suite la ligne de code suivante :
- Code:
implements MouseListener
Vous obtiendrez donc la ligne de code suivante :
- Code:
public class Level_1 extends JPanel implements MouseListener
(Note, au cas où d'autres choses sont déjà implémentées, il vous suffit de rajouter une virgule après un KeyListener par exemple et de rajouter le MouseListener)
Vous aurez ensuite toute la partie où vous déclarez vos variables, dans la suite (le init dans un Applet, l’endroit où vous définissez vos variables) , de la même manière que pour le clavier, rajoutez la ligne de code suivante :
- Code:
addMouseListener( this );
Et voilà, votre JPanel reconnaît désormais votre souris... ou plutôt est à même de le faire, si vous compilez maintenant il y aura des erreurs puisqu'il manque les classes de gestion de la souris, nous allons donc les rajouter, il s'agit des lignes suivantes :
- Code:
public void mousePressed(MouseEvent e)
{
}
public void mouseClicked(MouseEvent e){}
public void mouseReleased(MouseEvent e){}
public void mouseEntered(MouseEvent e){}
mousePressed sert à faire une action dès que vous cliquez à un endroit, mouseReleased détecte le moment quand vous lâchez le bouton, mouseClicked détecte un clic entier (clic + relâchement du bouton) et mouseEntered lorsque le curseur entre dans la fenêtre du logiciel.
Il en existe de nombreuses autres, personnellement pour les petits projets ne nécessitant pas d'être super précis absolument, la classe mousePressed est la plus facile et immédiate à utiliser.
En l'occurrence, maintenant votre JPanel détecte les clics de souris, il ne vous reste plus qu'à rajouter 2 lignes de codes et 2 variables. Définissez donc 2 variables du nom de vous voudrez (je les appelle personnellement K1 et K2 pour "Klic1" et 2 mais faîtes comme vous voudrez ), elles serviront à donner une valeur en pixel à l'endroit où vous avez cliqué sur votre fenêtre.
Ces deux variables définies, rajoutez désormais les 2 lignes suivantes dans la classe que vous souhaitez utiliser ( mousePressed donc si vous voulez commencer par aller au plus simple) :
- Code:
K1 = e.getX();
K2 = e.getY();
Et voilà, avec ça vous pouvez désormais TOUT faire avec votre souris, il ne vous suffit plus qu'à travailler avec des if et autres boucles pour détecter des clics sur certaines zones mais vous avez désormais tout en main pour utiliser la souris pour une utilisation standard évidemment puisqu'il existe beaucoup de possibilités plus compliquées encore, mais je pense que cela suffit pour un début.
Encore une petite note, si vous voulez, par exemple, déterminez sur quelle case d'un tableau l'utilisateur a cliqué, il vous suffit de diviser la valeur de K1 par la taille de la case en X et la valeur de K2 par la taille de la case en Y
Petite astuce en passant qui permet de gérer le clic sur n'importe quelle case d'un tableau en 3 lignes de codes, ce qui facilite grandement les choses.
Reconnaître quel bouton de la souris est utilisé en Java
Il est parfois important de savoir si l'utilisateur clic avec le bouton gauche ou droit de la souris (ou avec la molette) et c'est tout à fait possible, voir même extrêmement simple, à faire en Java en quelques lignes de codes.
Commencez par, dans votre classe que vous utilisez pour la détection (le mousePressed par exemple), rajouter la ligne suivante :
Avec ça, vous êtes désormais en mesure de savoir quel bouton de la souris est utilisé lors du clic... si si, une seule ligne et ça suffit, désormais la variable bouton obtiendra une valeur selon si vous faites un clic gauche, droit ou à la molette.
Comment extraire cette variable maintenant me direz vous ? Et bien c'est très simple, il vous suffit d'utiliser le if suivant :
Dans ce if, vous n'avez qu'à mettre tout ce qui se passe quand l'utilisateur clic sur le bouton gauche de la souris. En effet, MouseEvent.BUTTON1 est activé lorsque l'on clique avec le bouton gauche, BUTTON2 avec le bouton central (la molette) et BUTTON3 avec le clic droit.
Et voilà, en... 4 lignes de codes vous serez désormais à même d'effectuer des actions différentes selon si l'utilisateur fait un clic gauche ou droit et tout en facilité
Commencez par, dans votre classe que vous utilisez pour la détection (le mousePressed par exemple), rajouter la ligne suivante :
- Code:
int bouton = e.getButton();
Avec ça, vous êtes désormais en mesure de savoir quel bouton de la souris est utilisé lors du clic... si si, une seule ligne et ça suffit, désormais la variable bouton obtiendra une valeur selon si vous faites un clic gauche, droit ou à la molette.
Comment extraire cette variable maintenant me direz vous ? Et bien c'est très simple, il vous suffit d'utiliser le if suivant :
- Code:
if(bouton == MouseEvent.BUTTON1)
{
}
Dans ce if, vous n'avez qu'à mettre tout ce qui se passe quand l'utilisateur clic sur le bouton gauche de la souris. En effet, MouseEvent.BUTTON1 est activé lorsque l'on clique avec le bouton gauche, BUTTON2 avec le bouton central (la molette) et BUTTON3 avec le clic droit.
Et voilà, en... 4 lignes de codes vous serez désormais à même d'effectuer des actions différentes selon si l'utilisateur fait un clic gauche ou droit et tout en facilité
Seconde méthode de reconnaissance de bouton
A la suite du précédent ajout, je pense judicieux de vous préciser qu'il existe une autre méthode pour détecter le bouton sur lequel l'utilisateur a cliqué. En effet, la méthode que je vous ai présentée ci-dessus ne fonctionne pas forcément à 100% en raison des variables "BUTTON1" 2 et 3 qui peuvent s'inverser et causer des problèmes.
Voilà pourquoi il existe cette version que personnellement j'aime un peu moins puisque plus longue mais qui est plus judicieuse si vous souhaitez partager à plus large échelle votre programme.
Cette méthode la voici :
C'est assez clair je crois, là l'application détecte vraiment si c'est le bouton gauche, central ou droit de la souris qui est utilisé sans qu'il n'y aie le moindre doute possible. A vous de voir ce que vous préférez taper, les deux fonctionnent ( comme souvent en Java, 32 manières différentes de faire la même chose existent et chacune a un soucis que l'autre n'a pas ) donc utilisez-les selon vos besoin à vous, je souhaitait juste préciser que cette méthode existait pour pas laisser (trop) d’imprécisions.
Voilà pourquoi il existe cette version que personnellement j'aime un peu moins puisque plus longue mais qui est plus judicieuse si vous souhaitez partager à plus large échelle votre programme.
Cette méthode la voici :
- Code:
if ( SwingUtilities.isLeftMouseButton( e ) ) {
}
else if(SwingUtilities.isMiddleMouseButton( e ) ) {
}
else if(SwingUtilities.isRightMouseButton( e ) ) {
}
C'est assez clair je crois, là l'application détecte vraiment si c'est le bouton gauche, central ou droit de la souris qui est utilisé sans qu'il n'y aie le moindre doute possible. A vous de voir ce que vous préférez taper, les deux fonctionnent ( comme souvent en Java, 32 manières différentes de faire la même chose existent et chacune a un soucis que l'autre n'a pas ) donc utilisez-les selon vos besoin à vous, je souhaitait juste préciser que cette méthode existait pour pas laisser (trop) d’imprécisions.
Sujets similaires
» Changer l'image du curseur de la souris en Java
» Java : eclipse
» Java : Les variables
» Java : Les entrées
» Java : Les conditions
» Java : eclipse
» Java : Les variables
» Java : Les entrées
» Java : Les conditions
SOS internautes :: Aide informatique :: :: Programmation :: JAVA
Page 1 sur 1
Permission de ce forum:
Vous ne pouvez pas répondre aux sujets dans ce forum
Lun 19 Déc - 11:24 par bigblaireau
» Présentation
Lun 19 Déc - 11:10 par bigblaireau
» probleme incredimail
Mar 22 Mar - 19:06 par vanille57540
» (supprimé)
Ven 18 Mar - 20:06 par louis1806
» présentation
Ven 18 Mar - 10:47 par louis1806