过滤下一个焦点组件

时间:2010-05-20 10:40:52

标签: java swing focus

我想过滤下一个焦点组件 使用tab键

例如,我不想关注JLabelJScrollPaneJScrollBar按钮,JPanel等...

如果没有程序员处理焦点,我怎么能动态地做到这一点?

这就是我所做的:

JFrame frame = new JFrame("");
frame.setFocusTraversalPolicy(new JTPCFocusTraversalPolicy());

public class JTPCFocusTraversalPolicy extends LayoutFocusTraversalPolicy {
  protected boolean accept(Component aComponent) {
    return !JTPCGUIUtils.getInstance().filterCompoenent(aComponent);
  }
}

我有一个JListJButton的情况,但我必须按Tab键4次才能在各个组件之间移动。

在我的情况下,如何才能在列表和按钮之间只移动2个标签?

2 个答案:

答案 0 :(得分:1)

查看http://java.sun.com/docs/books/tutorial/uiswing/misc/focus.html

上的示例
  

使用以下代码行从复焦周期中删除复选框:

togglePolicy.setFocusable(false);

答案 1 :(得分:1)

从Java 1.4开始,您可以定义FocusTraversalPolicy:http://java.sun.com/j2se/1.4.2/docs/api/java/awt/FocusTraversalPolicy.html