static void handleCtrlTab_dev(final JComponent c) { swing { print("handleCtrlTab_dev: c=" + c); S name1 = "ctrl+tab pressed", name2 = "ctrl+tab released"; KeyStroke ctrlTab = KeyStroke.getKeyStroke("ctrl TAB"); KeyStroke ctrlShiftTab = KeyStroke.getKeyStroke("ctrl shift TAB"); c.setFocusTraversalKeys(KeyboardFocusManager.FORWARD_TRAVERSAL_KEYS, setMinus(c.getFocusTraversalKeys(KeyboardFocusManager.FORWARD_TRAVERSAL_KEYS), ctrlTab)); c.setFocusTraversalKeys(KeyboardFocusManager.BACKWARD_TRAVERSAL_KEYS, setMinus(c.getFocusTraversalKeys(KeyboardFocusManager.BACKWARD_TRAVERSAL_KEYS), ctrlShiftTab)); c.getInputMap(JComponent.WHEN_IN_FOCUSED_WINDOW).put(KeyStroke.getKeyStroke(KeyEvent.VK_TAB, InputEvent.CTRL_MASK, false), name1); c.getInputMap(JComponent.WHEN_IN_FOCUSED_WINDOW).put(KeyStroke.getKeyStroke(KeyEvent.VK_TAB, InputEvent.CTRL_MASK, true), name2); c.getActionMap().put(name1, abstractAction(name1, r { print("ctrl+tab yo") })); c.getActionMap().put(name2, abstractAction(name2, r { print("ctrl+tab no more") })); } }