Je fais du travail pour rendre une application Java compatible avec d'autres périphériques d'entrée. Malheureusement, le périphérique en question a une API Java qui est à peine dans les étapes alpha en ce moment, donc c'est assez pauvre. Ce que je dois faire est essentiellement de mettre en place une structure de remplacement pour l'envoi de MouseEvents. Est-ce que quelqu'un sait s'il existe un moyen dans Swing de prendre une coordonnée d'écran et de découvrir quel composant Swing est affiché en haut à ce point d'écran?Identification du composant Swing à une coordonnée d'écran particulière? (Et envoi manuel de MouseEvents)
10
A
Répondre
15
Dans AWT Container, appelez ce ...
findComponentAt(int x, int y)
Locates the visible child component that contains the specified position
-à-dire si elle est dans un GlassPane ...
public static Component findComponentUnderGlassPaneAt(Point p, Component top) {
Component c = null;
if (top.isShowing()) {
if (top instanceof RootPaneContainer)
c =
((RootPaneContainer) top).getLayeredPane().findComponentAt(
SwingUtilities.convertPoint(top, p, ((RootPaneContainer) top).getLayeredPane()));
else
c = ((Container) top).findComponentAt(p);
}
return c;
}
La lecture de votre question, cela pourrait être utile à vous aussi.
Si vous souhaitez exercer le contrôle, utilisez-le ... Java.awt.La classe Robot est utilisée pour prendre le contrôle de la souris et du clavier. Une fois que vous obtenez le contrôle, vous pouvez faire n'importe quel type d'opération liée à la souris et au clavier grâce à votre code java. Cette classe est généralement utilisée pour l'automatisation des tests.
3
Une alternative (peut nécessiter plus de peaufinage):
public static Component findComponentUnderMouse() {
Window window = findWindow();
Point location = MouseInfo.getPointerInfo().getLocation();
SwingUtilities.convertPointFromScreen(location, window);
return SwingUtilities.getDeepestComponentAt(window, location.x, location.y);
}
private static Window findWindow() {
for (Window window : Window.getWindows()) {
if (window.getMousePosition(true) != null)
return window;
}
return null;
}
Questions connexes
- 1. Java/swing: composant de la console?
- 2. Composant de vue de planification dans Swing
- 3. Utilisation du composant Swing étendu, doute de thread
- 4. Composant de calendrier enrichi pour l'application Swing
- 5. jQuery trouver ce qu'il y a à une coordonnée X/Y particulière?
- 6. Comment définir un texte à une coordonnée XY particulière dans MS Outlook 2007?
- 7. Comment déterminer un composant swing?
- 8. Swing ajouter un nouveau composant
- 9. identification du type
- 10. vacillante de composant Swing lorsque mis à jour beaucoup
- 11. Registre et identification du changement du système de fichiers
- 12. Comment trouver le composant C# qui contient une classe particulière
- 13. Une version texte du manuel MySQL
- 14. Quand un composant Swing est-il 'affichable'?
- 15. Identification du navigateur côté serveur en php
- 16. Un problème concernant MouseEvents
- 17. Mise à jour du composant Swing à partir d'un autre thread avec invokeLater ou SwingWorker
- 18. Existe-t-il une implémentation gratuite (LGPL, BSD, etc.) du composant swing de l'éditeur XML?
- 19. Comment ajouter MouseEvents à un AbsolutePanel?
- 20. Identification du contenu affiché à l'intérieur du QTP
- 21. Envoi d'un événement KeyEvent au composant ciblé
- 22. Identification du client sur SSL
- 23. Manuel de glib et multithread
- 24. Comment placer JButtons à une certaine coordonnée dans un JFrame
- 25. Identification du fichier de configuration effectif
- 26. Identification du contenu généré de manière dynamique sur une page
- 27. Joomla! Manuel du paquet Quickstart
- 28. Envoi de données du service à l'activité
- 29. Comment transformer une coordonnée de WGS84 en coordonnée dans une projection avec PROJ.4?
- 30. Swing: Comment régler la hauteur d'un composant à la hauteur du conteneur?
Merci! Je pensais qu'il devait y avoir un appel API, je ne regardais pas assez loin l'arbre des ancêtres. Et entendre parler de la classe Robot est un énorme bonus; Je n'avais aucune idée que quelque chose comme ça existait, et il y a de bonnes chances que tu m'ais sauvé des jours de travail! – DVA
@DVA Merci pour le commentaire, Les bons commentaires et l'upvote sont ce qui permet aux gens de répondre aux questions. Heureux de vous aider :) –