J'ai une mousse de souris Java sur un composant pour détecter les presses de la souris. Comment puis-je dire quel moniteur la presse de la souris s'est produite dans?
@Override public void mousePressed(MouseEvent e) { // I want to make something happen on the monitor the user clicked in }
4 Réponses :
Vous pouvez obtenir des informations d'affichage de Java .awt.graphicsenvironment . Vous pouvez utiliser cela pour obtenir des informations sur votre système local. Y compris les limites de chaque moniteur.
Point point = event.getPoint(); GraphicsEnvironment e = GraphicsEnvironment.getLocalGraphicsEnvironment(); GraphicsDevice[] devices = e.getScreenDevices(); Rectangle displayBounds = null; //now get the configurations for each device for (GraphicsDevice device: devices) { GraphicsConfiguration[] configurations = device.getConfigurations(); for (GraphicsConfiguration config: configurations) { Rectangle gcBounds = config.getBounds(); if(gcBounds.contains(point)) { displayBounds = gcBounds; } } } if(displayBounds == null) { //not found, get the bounds for the default display GraphicsDevice device = e.getDefaultScreenDevice(); displayBounds =device.getDefaultConfiguration().getBounds(); } //do something with the bounds ...
C'est la moitié de la solution et cela m'a aidé à travailler toute la solution. Merci!
peut-être e.getlocationVoyonscreen (); marchera? C'est seulement pour Java 1.6. P>
Depuis Java 1.6, vous pouvez utiliser GetLocationVoyen, dans les versions précédentes, vous devez obtenir l'emplacement du composant qui a généré l'événement: Vous devrez utiliser la classe graphiqueenvironment pour obtenir la liaison de l'écran. p> p>
La réponse de Rich m'a aidé à trouver une solution complète:
Si vous souhaitez obtenir le moniteur par défaut, voir ma réponse mise à jour, sur les systèmes multi-écrans où Windows doit être centré sur tous les affichages, GetMaximumWindowbounds () renvoie les limites de la zone d'affichage totale i>.
Je ne suis pas sûr que ce soit aussi facile. Je pense que vous devez capter la souris pour voir des clics à l'extérieur de votre fenêtre, et je ne sais pas comment faire cela dans Java (d'où le commentaire - je n'ai aucune "réponse").
Bill, vous avez raison, ce n'est pas facile. C'est pourquoi je demande le cerveau collectif qui est une pile débordement!