Tengo unos TextField
s en mi Frame
. Quiero saber qué TextField
actualmente tiene foco. ¿Cómo puedo encontrar esta información?Cómo averiguar qué objeto tiene actualmente el foco
Respuesta
JFrame.getFocusOwner()
(heredado de Window.getFocusOwner()
) debería devolver una referencia al componente con el foco. getMostRecentFocusOwner()
también podría ser de interés.
This tutorial debe ser bastante útil para comprender el enfoque.
Cada JComponent tiene un método hasFocus que puede usar para comprobar si tiene foco. Sin embargo, esto ha cambiado, y ahora debe usar isFocusOwner.
Por lo tanto, ejecute todos los campos de texto en su marco, y compruebe en cada uno de ellos si se isFocusOwner llamando a ese método.
También puede obtener el propietario del foco a través del marco.
getFocusOwner() devolverá el componente secundario que está actualmente enfocado.
Pero debes comprobar si se trata de un JTextField. Otros componentes, como los botones, pueden centrarse si también existen en tu marco.
también echar un vistazo a la javax.swing.FocusManager
KeyboardFocusManager.getCurrentKeyboardFocusManager().getFocusOwner()
Mucho mejor que la respuesta aceptada, en mi humilde opinión, ya que puedo hacer esto desde una clase estática que no tiene acceso a la ventana que estoy usando, y no tengo que recorrer todas las ventanas. –
KeyboardFocusManager.getCurrentKeyboardFocusManager().getFocusOwner()
;
no funciona a través de subprocesos. Entonces, si su aplicación invoca un nuevo hilo y ese hilo tiene su propio marco/ventana, etc., entonces no podrá obtener el propietario del foco de ese hilo. En su lugar use: KeyboardFocusManager.getCurrentKeyboardFocusManager().getGlobalFocusOwner();
de acuerdo, leer el documento de api ayuda (yo :-) a entender lo que puede significar. Indica que _Returna el propietario del foco, incluso si el hilo de llamada se encuentra en un contexto diferente al del propietario del foco_ - no se puede utilizar en el código de la aplicación, sin embargo, porque su alcance está protegido. Se usa internamente ... – kleopatra
Swing es un entorno de subproceso único, todas las interacciones de UI DEBEN ocurrir dentro del contexto del subproceso de distribución de eventos, es imposible tener dos ventanas dentro de la misma JVM que operen en diferentes subprocesos, así no es como API funciona – MadProgrammer
- 1. Descubriendo qué control tiene foco
- 2. ¿Cómo puedo controlar qué ventana tiene actualmente foco en el teclado?
- 3. ¿Cómo averiguo qué elemento de GWT tiene foco?
- 4. C#: Detectando qué aplicación tiene foco
- 5. ¿Cómo pruebo qué elemento tiene el foco en Selenium RC?
- 6. wxPython: ¿Cómo averiguo qué widget tiene el foco?
- 7. ¿Cómo eliminar el foco del componente actualmente enfocado?
- 8. ¿Cómo saber qué ventana tiene foco y cómo cambiarla?
- 9. ¿Qué navegador tiene actualmente el mejor soporte para HTML 5?
- 10. ¿Cómo determinar qué control en la forma tiene foco?
- 11. Cómo establecer qué control tiene foco en Inicio de aplicación
- 12. ¿Cómo averiguo qué control tiene foco en .NET Windows Forms?
- 13. averiguar qué widget gtk tiene la selección actual
- 14. ¿Cómo elimino el borde amarillo cuando un objeto tiene foco en Flash?
- 15. ¿Cómo determinar si un campo tiene foco?
- 16. Sql Server 2000 - ¿Cómo puedo averiguar qué procedimientos almacenados se están ejecutando actualmente?
- 17. ¿cómo puede averiguar si un NSObject tiene cierta propiedad?
- 18. ¿Cómo verifica si un widget tiene foco en Tkinter?
- 19. ¿Cómo establece programáticamente el foco en SelectedItem en un WPF ListBox que ya tiene foco?
- 20. cómo saber si un UITextView tiene un foco o no
- 21. ¿Cómo puedo averiguar el serialVersionUID de un objeto Java serializado?
- 22. Python - el objeto 'str' no tiene el atributo 'cerrar'
- 23. Emacs qué modos estoy usando actualmente
- 24. cómo averiguar todas las propiedades de un objeto en lua?
- 25. para x en y, tipo de iteración en python. ¿Puedo averiguar en qué iteración estoy actualmente?
- 26. ¿Cómo puedo averiguar a qué función javascript llama el evento onclick de un objeto?
- 27. ¿Cómo puedo averiguar si un objeto está bloqueado? C#
- 28. Qué expresión regular sería averiguar si el archivo url tiene cierta extensión
- 29. Encontrar qué métodos tiene un objeto Python
- 30. Cómo averiguar la ubicación del archivo de configuración MySQL utilizado actualmente en Linux
Parece muy ineficiente. Simplemente puede llamar a KeyboardFocusManager.getCurrentKeyboardFocusManager(). GetFocusOwner(); –