我说的不一定对,可能不符合你的情况,你可以参考!
如果可以,你可以捕获TAB键的ascii键值,然后在对其进行相应的处理!

解决方案 »

  1.   

    试试这个import java.awt.*;
    import javax.swing.*;
    import java.util.Arrays;
    import java.util.Comparator;
    import java.util.List;public class BorderFocus {
      public static void main(String args[]) {
        JFrame frame = new JFrame("Focus Cycling");
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        Container contentPane = frame.getContentPane();
        JButton north = new JButton("North");
        contentPane.add(north, BorderLayout.NORTH);
        JButton south = new JButton("South");
        contentPane.add(south, BorderLayout.SOUTH);
        JButton east = new JButton("East");
        contentPane.add(east, BorderLayout.EAST);
        JButton west = new JButton("West");
        contentPane.add(west, BorderLayout.WEST);
        JButton center = new JButton("Center");
        contentPane.add(center, BorderLayout.CENTER);
        contentPane.setFocusable(false);
        final Component order[] =
          new Component[] {north, east, south, west, center};
        FocusTraversalPolicy policy = new FocusTraversalPolicy() {
          List list = Arrays.asList(order);
          public Component getFirstComponent(Container focusCycleRoot) {
            return order[0];
          }
          public Component getLastComponent(Container focusCycleRoot) {
            return order[order.length-1];
          }
          public Component getComponentAfter(Container focusCycleRoot,
              Component aComponent) {
            int index = list.indexOf(aComponent);
            return order[(index + 1) % order.length];
          }
          public Component getComponentBefore(Container focusCycleRoot,
              Component aComponent) {
            int index = list.indexOf(aComponent);
            return order[(index - 1 + order.length) % order.length];
          }
          public Component getDefaultComponent(Container focusCycleRoot) {
            return order[0];
          }
        };
        frame.setFocusTraversalPolicy(policy);
        frame.pack();
        frame.show();
       }
    }