下面列出了javax.swing.JComponent#setFocusTraversalKeys ( ) 实例代码,或者点击链接到github查看源代码,也可以在右侧发表评论。
/**
* This method sets the FocusTraversalKeys for a component to be the standard keys.
* Use this on Tables or TextAreas where you want the tab keys to leave the control.
*
* @param component the component that you want to fix tab keys for
*/
public static void fixTabKeys(final JComponent component) {
final Set<AWTKeyStroke> forward = new HashSet<AWTKeyStroke>(
component.getFocusTraversalKeys(KeyboardFocusManager.FORWARD_TRAVERSAL_KEYS));
forward.add(KeyStroke.getKeyStroke("TAB"));
component.setFocusTraversalKeys(KeyboardFocusManager.FORWARD_TRAVERSAL_KEYS, forward);
final Set<AWTKeyStroke> backward = new HashSet<AWTKeyStroke>(
component.getFocusTraversalKeys(KeyboardFocusManager.BACKWARD_TRAVERSAL_KEYS));
backward.add(KeyStroke.getKeyStroke("shift TAB"));
component.setFocusTraversalKeys(KeyboardFocusManager.BACKWARD_TRAVERSAL_KEYS, backward);
}
private static void forwardFocusWhenTabKeyReleased(JComponent aSenderComponent, JComponent aReceiverComponent) {
ForwardFocusAction forwardFocusAction = new ForwardFocusAction("TabKeyAction", aReceiverComponent);
aSenderComponent.setFocusTraversalKeys(0, new HashSet());
int modifiers = 0; // '0' => no modifiers
int keyCode = KeyEvent.VK_TAB;
KeyStroke tabKeyReleased = KeyStroke.getKeyStroke(keyCode, modifiers, true);
aSenderComponent.getInputMap(1).put(tabKeyReleased, forwardFocusAction.getName());
aSenderComponent.getActionMap().put(forwardFocusAction.getName(), forwardFocusAction);
}
public static void fixFocusTraversalKeys(JComponent component) {
Set<AWTKeyStroke> set = component.getFocusTraversalKeys(KeyboardFocusManager.FORWARD_TRAVERSAL_KEYS);
set = new HashSet<AWTKeyStroke>(set);
set.add(AWTKeyStroke.getAWTKeyStroke(KeyEvent.VK_TAB, InputEvent.CTRL_DOWN_MASK | InputEvent.ALT_DOWN_MASK));
component.setFocusTraversalKeys(KeyboardFocusManager.FORWARD_TRAVERSAL_KEYS, set);
}