Hola!!!!!!!
Implementé un FocusTraversalPolicy "sobrecargando" getComponentAfter, getComponentBefore, getDefaultComponent, getLastComponent, getFirstComponent.
El problema es que cuando el foco esta en uno de los JTextFields el metodo getComponentBefore no es llamado y no se por que es. El JTextField del problema se llama textoInstrumento. Ahi va algo de codigo:
public class PoliticaFocos extends FocusTraversalPolicy
{
/**@param focusCycleRoot Raiz
* @param aComponent Componente
* @return Siguiente componente */
public Component getComponentAfter(Container focusCycleRoot,
Component aComponent)
{
if (aComponent.equals(textoInstrumento))
return textoPrecio;
if (aComponent.equals(textoPrecio))
return textoCliente;
if (aComponent.equals(textoCliente))
return textoCantidad;
if (aComponent.equals(textoCantidad))
return textoPosicion;
if (aComponent.equals(textoPosicion))
return textoCondicion;
if (aComponent.equals(textoCondicion))
return textoInstrumento;
return textoInstrumento;
}
/**@param focusCycleRoot Raiz
* @param aComponent Componente
* @return Componente anterior */
public Component getComponentBefore(Container focusCycleRoot,
Component aComponent)
{
if (aComponent.equals(textoCondicion))
return textoPosicion;
if (aComponent.equals(textoPosicion))
return textoCantidad;
if (aComponent.equals(textoCantidad))
return textoCliente;
if (aComponent.equals(textoCliente))
return textoPrecio;
if (aComponent.equals(textoPrecio))
return textoInstrumento;
if (aComponent.equals(textoInstrumento))
return textoCondicion;
return textoInstrumento;
}
/**@param focusCycleRoot Raiz
* @return Componente por default */
public Component getDefaultComponent(Container focusCycleRoot)
{
return textoInstrumento;
}
/**@param focusCycleRoot Raiz
* @return Ultimo componente */
public Component getLastComponent(Container focusCycleRoot)
{
return textoCondicion;
}
/**@param focusCycleRoot Raiz
* @return Primer componente */
public Component getFirstComponent(Container focusCycleRoot)
{
return textoInstrumento;
}
} // Fin de la clase que maneja el focus
Declaracion del los JTextFields:
JTextField textoInstrumento = new JTextField();
JTextField textoPrecio = new JTextField();
JTextField textoCliente = new JTextField();
JTextField textoCantidad = new JTextField();
JTextField textoPosicion = new JTextField();
JTextField textoCondicion = new JTextField();
JTextField textoCantidadHitTake = new JTextField();
Si miran el codigo en la politica de focos, veran que nunca aparece textoCantidadHitTake ya q quiero q este nunca tome el foco porque esta no visible casi todo el tiempo.
Bueno, si alguien sabe
Salu2!!!!!!