He creado un formulario usando Swing en Java. En el formulario he usado un campo de texto en el que tengo que establecer el foco cada vez que presiono la tecla. ¿Cómo establecer el foco en un componente en particular en Java?¿Cómo se establece un foco en Textfield en Swing?
Respuesta
¿Le daría lo que necesita? Component.requestFocus()
Gracias, déjame ver si me funciona o no –
Me tomó cinco minutos encontrarlo ... tanto para la búsqueda "simple" :-(- ah bueno, los documentos API de Java no son un modelo de claridad de todos modos :-) – Joey
FYI, los [javadocs para JComponent] (http://docs.oracle.com/javase/7/docs/api/index.html) dicen de 'requestFocus()', "uso de esto método se desaconseja porque su comportamiento depende de la plataforma. recomendamos el uso de [requestFocusInWindow()] (http://docs.oracle.com/javase/7/docs/api/javax/swing/JComponent.html#requestFocusInWindow()). Si desea obtener más información sobre el enfoque, consulte [Cómo utilizar el Subsistema de enfoque] (http://java.sun.com/docs/books/tutorial/uiswing/misc/focus.html), una sección en The Java Tutorial. . " –
Ahora que hemos buscado en la API, todo lo que tenemos que hacer es leer la API.
De acuerdo con la documentación de la API:
"Debido a que el comportamiento del foco de este método es dependiente de la plataforma, desarrolladores se recomienda encarecidamente a uso requestFocusInWindow cuando posible."
Esto funcionaría ..
SwingUtilities.invokeLater(new Runnable() {
public void run() {
Component.requestFocus();
}
});
Tenga en cuenta que todo lo anterior falla por algún motivo en JOptionPane. Después de mucho ensayo y error (más de lo anteriormente planteado 5 minutos, de todos modos), esto es lo que finalmente funcionó:
final JTextField usernameField = new JTextField();
// ...
usernameField.addAncestorListener(new RequestFocusListener());
JOptionPane.showOptionDialog(this, panel, "Credentials", JOptionPane.OK_CANCEL_OPTION, JOptionPane.PLAIN_MESSAGE, null, null, null);
public class RequestFocusListener implements AncestorListener {
@Override
public void ancestorAdded(final AncestorEvent e) {
final AncestorListener al = this;
SwingUtilities.invokeLater(new Runnable() {
@Override
public void run() {
final JComponent component = e.getComponent();
component.requestFocusInWindow();
component.removeAncestorListener(al);
}
});
}
@Override
public void ancestorMoved(final AncestorEvent e) {
}
@Override
public void ancestorRemoved(final AncestorEvent e) {
}
}
gracias por esta solución. Esta es la única manera funcionó. – MyPasswordIsLasercats
Usted puede usar también JComponent.grabFocus();
es el mismo
Javadoc para [JComponent.grabFocus()] (http://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html#grabFocus--) establece explícitamente que este método debería no ser utilizado por el código del cliente y sugiere utilizar el método 'requestFocusInWindow()', que ya se menciona en otras respuestas. –
- 1. ¿Cómo se establece el orden de tabulación en Swing Java?
- 2. ¿Cómo se establece el foco de un elemento textarea TinyMCE?
- 3. ¿Cómo establece programáticamente el foco en SelectedItem en un WPF ListBox que ya tiene foco?
- 4. Java establece el foco en jbutton al presionar enter
- 5. ¿Cómo se establece un valor predeterminado para un WTForms SelectField?
- 6. ¿Cómo se establece el foco en el elemento canvas de HTML5?
- 7. ¿Cómo se establece automáticamente el foco en un cuadro de texto cuando se carga una página web?
- 8. TextField desaparecidos en django.forms
- 9. ¿Cómo se borra el foco en javascript?
- 10. ¿Cómo se establece MOTW en un archivo ejecutable
- 11. ¿Cómo se establece el texto en un NSTextField?
- 12. ¿Cómo se establece el tamaño de fuente en un UIBarButtonItem?
- 13. ¿Cómo se establece un valor doble en "sin valor"
- 14. Mostrar datepicker en textfield tap
- 15. ¿Cómo se establece el botón predeterminado en PyGTK?
- 16. ¿Cómo puedo usar un TextField condicional en JasperReports?
- 17. ¿Cómo verifico los valores nulos en un Wicket Textfield?
- 18. Java Swing: se ejecuta en EDT
- 19. Newline "\ n" en TextField java
- 20. ¿Cómo establecer el foco en el próximo uitextfield en iPhone?
- 21. ¿Cómo se establece origen/HEAD?
- 22. Cómo crear un retraso en Swing
- 23. RequestFocus en TextField no funciona
- 24. ¿Cómo se produce un evento cuando el control de texto pierde el foco?
- 25. cómo se establece en el título CENTRO en AlertDialog?
- 26. EXTJS Ayuda de TextField en el lado
- 27. Mongoid, alcance si se establece un valor?
- 28. textField: shouldChangeCharactersInRange: replacementString: en la subclase
- 29. donde se establece $ PATH en xcode?
- 30. ¿Cómo se establece el classpath para rJava en R?
10 preguntas, ninguno de ellos respuestas aceptadas ... –