No entiendo muy bien la diferencia entre estos dos métodos. ¿En qué situación sería forceFocus()
mejor que setFocus()
?¿Cuál es la diferencia entre forceFocus() y setFocus() en SWT?
Respuesta
Según SWT: The Standard Widget Toolkit, Volumen 1, forceFocus():
Obliga al control a recibir teclado eventos. Los controles que normalmente no aceptan aceptar la entrada del teclado tomarán el foco usando este método. Si el foco no puede ser asignado por alguna razón, falso es devuelto.
también:
En términos generales, forzando enfoque es algo que nunca se quiere hacer. Por ejemplo, forzar el enfoque a una etiqueta no es muy útil porque las etiquetas no dibujan de una manera que indique que pueden aceptar entradas. Forzar el foco a un control que no lo espera puede confundir a los usuarios porque no tienen idea de donde van sus teclas. Los programas de aplicación siempre deben usar setFocus() para asignar el foco.
venir en forma tardía en este caso, pero acabo de terminar una sesión prolongada cabeza-golpeo-contra-pared en algo relacionado con esto y pensé en hacer un informe rápido:
Si su control tiene hijos, el setFocus(myControl)
hará una búsqueda de profundidad en el árbol secundario y establecerá el foco en el primer hijo más bajo. Por otro lado, forceFocus(myControl)
simplemente establecerá el foco en myControl y habrá terminado con él.
Tuve una situación con un diálogo no modal con un GridLayout, donde la mayoría de las celdas de la grilla eran un conjunto de objetos subcategorizados de Canvas que necesitaban enfoque. (Sí, esto es un poco extraño, pero quería poder desplazarme sobre una celda y escribir cosas en ella.) El último control en la cuadrícula era un botón "listo", que configuré como la selección predeterminada.
Cuando el mouse dejó las celdas del lienzo, estaba haciendo un setFocus(myDialogShell)
, que instantáneamente estableció el foco en el primer elemento del lienzo, evitando que el botón "done" reciba el \ r y deshacerse de todo el negocio sórdido. Por otro lado, forceFocus(myDialogShell)
hizo el truco.
- 1. SWT y AWT, ¿cuál es la diferencia?
- 2. ¿Cuál es la diferencia entre + = y = +?
- 3. ¿cuál es la diferencia entre:.! y: r !?
- 4. ¿Cuál es la diferencia entre ".equals" y "=="?
- 5. Cuál es la diferencia entre $ y jQuery
- 6. Cuál es la diferencia entre = y: =
- 7. Cuál es la diferencia entre $ (...) y `...`
- 8. ¿Cuál es la diferencia entre dict() y {}?
- 9. ¿Cuál es la diferencia entre [indefinido] y [,]?
- 10. ¿Cuál es la diferencia entre {0} y ""?
- 11. ¿Cuál es la diferencia entre .ToString (+) y ""
- 12. ¿Cuál es la diferencia entre `##` y `hashCode`?
- 13. ¿Cuál es la diferencia entre "$^N" y "$ +"?
- 14. ¿Cuál es la diferencia entre " " y ""?
- 15. ¿Cuál es la diferencia entre @ y $ y% en MSBuild?
- 16. OpenGL (ES) - ¿Cuál es la diferencia entre frustum y orto?
- 17. ¿Cuál es la diferencia entre la abstracción y la encapsulación?
- 18. ¿Cuál es la diferencia entre Session.Abandon() y Session.Clear() en ASP.Net?
- 19. ¿cuál es la diferencia entre didselectrowindexpath y willselectrowindexpath en iphone?
- 20. ¿cuál es la diferencia entre NULL y Empty en mysql
- 21. ¿Cuál es la diferencia entre longblob y longtext en mysql?
- 22. ¿Cuál es la diferencia entre $ @ y $ * en scripts de shell?
- 23. ¿Cuál es la diferencia entre flush y commit en Hibernate?
- 24. ¿Cuál es la diferencia entre iTerm2 y Terminal en Mac?
- 25. ¿Cuál es la diferencia entre @ y @@ en un módulo?
- 26. ¿Cuál es la diferencia entre & y && en MATLAB?
- 27. ¿Cuál es la diferencia entre _isEnabled y isEnabled en Anguila?
- 28. ¿Cuál es la diferencia entre referencias y objetos en Java?
- 29. cuál es la diferencia entre mapa y hashmap en STL
- 30. ¿cuál es la diferencia entre r y rb en fopen