2012-02-28 163 views
9

Quiero saber cómo ajustar el orden de las Tab en una interfaz Swing. Encontré un ejemplo y mostró que este método debería funcionar, pero parece que está obsoleto y no funciona.¿Cómo se establece el orden de tabulación en Swing Java?

getCombox("cmbFrom").setNextFocusableComponent(getCombox("cmbTo")); 

Nota: - El método siguiente devuelve un objeto Combox con el nombre de argumento. Si alguien sabe cómo hacerlo con Netbeans IDE sería genial. Encontré una manera de hacerlo en Eclipse WindowBuilder pero no en Netbeans IDE. Gracias.

getCombox(String s) 

Respuesta

14

Puede utilizar el setFocusTraversalPolicy en su contenedor.

FocusTraversalPolicy la clase es abstracta y necesita implementar algunos métodos que devolverán el orden de enfoque del componente del contenedor. Funcionará con Tab y Shift + Tab.

+1

Lo mejor es que es enlace a la última versión de los JavaDocs. He editado su respuesta para que apunte a J2SE 7. Para obtener sugerencias sobre cómo obtener un enlace a los últimos documentos, consulte [punto 2 de ventajas] (http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=7090875) . –

+3

+1 para FTP, pero mejor no comience en FocusTraversalPolicy, hay demasiadas cosas que pueden salir mal. Mejor comenzar desde cualquiera de las implementaciones concretas (fi SortingFocusTraversalPolicy) y anular según sea necesario (complemento fi en un comparador personalizado) – kleopatra

+0

fyi, acaba de comprobar el tutorial http://docs.oracle.com/javase/tutorial/uiswing/misc/ focus.html # customFocusTraversal: ese capítulo sigue siendo tan malo como desde el principio. Para ver la mala conducta de la implementación demasiado ingenua, reemplace f.i. textField tf4 con un comboBox editable ... – kleopatra

3

si está usando netbeans, seleccione el primer componente que desea que sea el primer elemento centrado y en propiedades asegúrese de que focusCycleRoot esté marcado. y en el nextFocusableComponent elegir el siguiente componente que desea obtener el foco cuando se pulsa la pestaña e ir por delante de la misma manera para el otro componente

Nota: no comprobar la focusCycleRooot para el otro componente

Cuestiones relacionadas