Swing中设置按Tab键后焦点的顺序

Swing中设置按Tab键后焦点的顺序

 

import javax.swing.*;
import java.awt.*;
import java.util.Arrays;
import java.util.ArrayList;/**
 * <p>Title: </p>
 *
 * <p>Description: </p>
 *
 * <p>Copyright: Copyright (c) 2008</p>
 *
 * <p>Company: </p>
 *
 * @author not attributable
 * @version 1.0
 */
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);
     ArrayList<Component> list = new ArrayList<Component>();
     
     list.add(north);
     list.add(east);
     list.add(south);
     list.add(west);
     list.add(center);
     final ArrayList comList = list;
    FocusTraversalPolicy policy = new FocusTraversalPolicy() {
      public Component getFirstComponent(Container focusCycleRoot) {
        return  (Component)comList.get(0);
      }
      public Component getLastComponent(Container focusCycleRoot) {
        return (Component) comList.get(comList.size()-1);
      }
      public Component getComponentAfter(Container focusCycleRoot, 
          Component aComponent) {
        int index = comList.indexOf(aComponent);
        
        return (Component) comList.get((index + 1) % comList.size());
      }
      public Component getComponentBefore(Container focusCycleRoot, 
          Component aComponent) {
        int index = comList.indexOf(aComponent);
        return (Component) comList.get((index - 1 + comList.size()) % comList.size());
      }
      public Component getDefaultComponent(Container focusCycleRoot) {
        return (Component) comList.get(0);
      }
    };
    frame.setFocusTraversalPolicy(policy);
    frame.pack();
    frame.show();
   }
}

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值