Java FocusTraversalPolicy create

Description

Java FocusTraversalPolicy create

import java.awt.Component;
import java.awt.Container;
import java.awt.FocusTraversalPolicy;
import java.awt.GridLayout;
import java.util.Arrays;
import java.util.Comparator;
import java.util.List;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.SortingFocusTraversalPolicy;

public class Main {
   public static void main(String args[]) {
      JFrame frame = new JFrame("Reverse focus sample");
      frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
      frame.setLayout(new GridLayout(3, 3));
      for (int i = 0; i < 9; i++) {
         JButton button = new JButton(Integer.toString(i));
         frame.add(button);//  w  w w  .  j a v a2  s.  c  om
      }
      final Container contentPane = frame.getContentPane();
      Comparator<Component> comp = new Comparator<Component>() {
         public int compare(Component c1, Component c2) {
            Component comps[] = contentPane.getComponents();
            List<Component> list = Arrays.asList(comps);
            int first = list.indexOf(c1);
            int second = list.indexOf(c2);
            return second - first;
         }
      };
      FocusTraversalPolicy policy = new SortingFocusTraversalPolicy(comp);
      frame.setFocusTraversalPolicy(policy);
      frame.setSize(300, 200);
      frame.setVisible(true);
   }
}



PreviousNext

Related