2010-01-29 21 views
8

¿Cómo evito que un campo de texto multilínea "robe" las teclas con tabulador?Use la tecla Tab en un texto de líneas múltiples archivado en swt?

Quiero decir: me gustaría usar TAB para alternar entre los elementos de una ventana, pero cuando ingreso el texto de líneas múltiples, TAB se convierte en una tecla "normal" y simplemente inserta tabuladores en el texto que estoy escribiendo .

¿Cómo manejo esto? ¿Debo escribir algún oyente personalizado, o puedo cambiar el comportamiento del componente usando una constante SWT?

Respuesta

20

SWT define un mecanismo para la aplicación de este tipo de comportamiento utilizando la clase TraverseListener. El siguiente fragmento (tomado de here) muestra cómo:

Text text1 = new Text(shell, SWT.MULTI | SWT.WRAP); 
text1.setBounds(10,10,150,50); 
text1.setText("Tab will traverse out from here."); 
text1.addTraverseListener(new TraverseListener() { 
    public void keyTraversed(TraverseEvent e) { 
     if (e.detail == SWT.TRAVERSE_TAB_NEXT || e.detail == SWT.TRAVERSE_TAB_PREVIOUS) { 
      e.doit = true; 
     } 
    } 
}); 
2

Agregue un detector de pulsaciones de teclas al campo de texto o de texto e implemente un controlador especial para TAB. También he visto esta 'captura de pestañas' en las aplicaciones Swing y generalmente es molesto.

usted podría ofrecer otro controlador para Shift - TAB que luego insertar un \t, si todavía quiere permitir que las pestañas en el campo de texto.

+0

Funciona, muchas gracias. –

Cuestiones relacionadas