tutorial modern framework chile java user-interface focus swt swt-awt

modern - swt java



Haciendo enfocado compuesto en SWT (1)

Si un Composite contiene widgets secundarios, la acción predeterminada es abandonar el enfoque cuando se selecciona. Para evitar esto, comience extendiendo la clase Composite como tal:

class FocusableComposite extends Composite { public FocusableComposite(Composite parent, int style) { super(parent, style); } public boolean setFocus() { return super.forceFocus(); } }

Luego use un MouseListener en una nueva instanciación de FocusableComposite para llamar a setFocus () directamente cada vez que se haga clic en el Composite :

Composite composite = new FocusableComposite(shell, SWT.NONE); composite.addMouseListener(new MouseAdapter() { public void mouseDown(MouseEvent event) { ((Composite)event.widget).setFocus(); } });

¿Es posible crear un compuesto enfocable en SWT? Estoy detectando todos los eventos del teclado a través del filtro de pantalla, pero hay algunos problemas cuando el foco está en el árbol o la lista: la acción predeterminada de GTK + es buscar en el contenido del control.

Lo que quiero hacer es mezclar SWT y AWT con un componente AWT enfocable. Me las arreglé para hacer que el widget de AWT fuera desenfocable y agregué Filtro de visualización para hacer que el componente de AWT reciba eventos del teclado (pero no directamente), incluso cuando no está enfocado. Pero hay varios problemas cuando algunos controles de SWT están enfocados, por eso quiero que el enfoque se pueda enfocar en el compuesto.

Así que mi última pregunta es: ¿es posible hacer SWT composite enfocable?