Author Topic: metodo obsoleto setNextFocusableComponent  (Read 6191 times)

StarKaz

  • Newbie
  • *
  • Posts: 20
  • Karma: 0
    • View Profile
metodo obsoleto setNextFocusableComponent
« on: Junio 15, 2023, 08:25:15 pm »
Hola
por si es necesario uso Apache NetBeans IDE 16.

Bueno, el caso es que el metodo setNextFocusableComponent(Component) esta obsoleto, funciona igual sin problemas pero no se hasta cuando funcionan los metodos obsoletos.....

Mesale que hay que utilizar FocusTraversalPolicy, pero no se si es que no soy bueno ;) y no me llevo con la policia o que pero no soy capaz de usarlo y no encuentro ninguna solucion que me funcione en internet (bueno , que no implique un monton de codigo para algo tan simple), como sabras setNextFocusableComponent vale para ue cuando le das la TAB el focus cambie al siguiente componente que hayas seleccionado y esto es lo que quiero hacer

en netbeans salen unas opciones, pero no doy encontrado la forma de hacerlas funcionar de forma "facil".. ni de ninguna otra manera

gracias de antemano

StarKaz

  • Newbie
  • *
  • Posts: 20
  • Karma: 0
    • View Profile
Re: metodo obsoleto setNextFocusableComponent
« Reply #1 on: Junio 19, 2023, 06:06:09 pm »
Nadie me puede dar alguna indicacion de como usar FocusTraversalPolicy?
please

chuidiang

  • Administrator
  • Hero Member
  • *****
  • Posts: 5541
  • Karma: 12
    • View Profile
    • Apuntes de programación
Re: metodo obsoleto setNextFocusableComponent
« Reply #2 on: Junio 20, 2023, 10:03:05 am »
Hola

Extraido de aquí https://docs.oracle.com/javase/tutorial/displayCode.html?code=https://docs.oracle.com/javase/tutorial/uiswing/examples/misc/FocusTraversalDemoProject/src/misc/FocusTraversalDemo.java

Este es un ejemplo de como implementar FocusTraversalPolicy pasándole un Vector con los componentes de tu panel, en orden

Code: [Select]
public static class MyOwnFocusTraversalPolicy
                  extends FocusTraversalPolicy
    {
        Vector<Component> order;
 
        public MyOwnFocusTraversalPolicy(Vector<Component> order) {
            this.order = new Vector<Component>(order.size());
            this.order.addAll(order);
        }
        public Component getComponentAfter(Container focusCycleRoot,
                                           Component aComponent)
        {
            int idx = (order.indexOf(aComponent) + 1) % order.size();
            return order.get(idx);
        }
 
        public Component getComponentBefore(Container focusCycleRoot,
                                            Component aComponent)
        {
            int idx = order.indexOf(aComponent) - 1;
            if (idx < 0) {
                idx = order.size() - 1;
            }
            return order.get(idx);
        }
 
        public Component getDefaultComponent(Container focusCycleRoot) {
            return order.get(0);
        }
 
        public Component getLastComponent(Container focusCycleRoot) {
            return order.lastElement();
        }
 
        public Component getFirstComponent(Container focusCycleRoot) {
            return order.get(0);
        }
    }

Luego, en el contenedor que sea, sólo tiene que llamar a setFocusTraversalPolicy() pasándole la instancia de MyOwnFocusTraversalPolicy

Se bueno.

StarKaz

  • Newbie
  • *
  • Posts: 20
  • Karma: 0
    • View Profile
Re: metodo obsoleto setNextFocusableComponent
« Reply #3 on: Junio 20, 2023, 08:13:55 pm »
Si, ese fue uno de los sitios que consulte, me parecio una solucion un tanto complicada para hacer algo tan simple.....
Me popndre a trabajar en ello para ver si lo consigo hacer funcionar
Gracias de nuevo chui