Skip to main content

Deshabilitar navegación con tecla TAB en una ventana java

Posted in

 Cuando creamos una ventana en java con varios componentes, podemos movernos entre ellos usando la tecla TAB. Si queremos deshabilitar o modificar este comportamiento, podemos darle a la ventana (al contenedor) un FocusTraversalPolicy de nuestra cosecha. El siguiente código deshabilita el comportamiento, aunque pone el foco en el primer componente de la ventana cuando se visualiza. Es importante la línea setFocusTraversalPolicyProvider(true)

public static void main(String[] args) {
   JFrame v = new JFrame();
   v.setLayout(new FlowLayout());

   v.getContentPane().setFocusTraversalPolicyProvider(true);

   v.getContentPane().setFocusTraversalPolicy(new FocusTraversalPolicy() {

   @Override
   public Component getLastComponent(Container aContainer) {
      // TODO Auto-generated method stub
      return null;
   }

   @Override
   public Component getFirstComponent(Container aContainer) {
      return null;
   }

   @Override
   public Component getDefaultComponent(Container aContainer) {
      return aContainer.getComponent(0);
   }

   @Override
   public Component getComponentBefore(Container aContainer,
                Component aComponent) {
      // TODO Auto-generated method stub
      return null;
   }

   @Override
   public Component getComponentAfter(Container aContainer,
                Component aComponent) {
       // TODO Auto-generated method stub
      return null;
   }
});

v.getContentPane().add(new JTextField(10));
v.getContentPane().add(new JTextField(10));
v.pack();
v.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
v.setVisible(true);
}