![]() |
The Java Developers Almanac 1.4Order this book from Amazon. |
e612. Moving the Focus to the Next or Previous Focusable ComponentThe methods to move the focus to the next or to the previous focusable component areComponent.transferFocus() and
Component.transferFocusBackward() .
This example modifies a component so that pressing the space bar or pressing F2 moves the focus to the next focusable component. Pressing shift space or shift F2 moves the focus to the previous focusable component. // Bind space and shift space component.getInputMap(JComponent.WHEN_FOCUSED).put( KeyStroke.getKeyStroke("SPACE"), nextFocusAction.getValue(Action.NAME)); component.getInputMap(JComponent.WHEN_FOCUSED).put( KeyStroke.getKeyStroke("shift SPACE"), prevFocusAction.getValue(Action.NAME)); // This key binding is required for text components. It hides the // default typed space key binding in a text component. If you don't // hide this key binding, typing the space key will insert a space into // the text component (as well as move the focus). // See e1003 Overriding a Few Default Typed Key Bindings in a JTextComponent for more details. component.getInputMap(JComponent.WHEN_FOCUSED).put( KeyStroke.getKeyStroke(new Character(' '), 0), "unbound"); // Bind F2 and shift F2 component.getInputMap(JComponent.WHEN_FOCUSED).put( KeyStroke.getKeyStroke("F2"), nextFocusAction.getValue(Action.NAME)); component.getInputMap(JComponent.WHEN_FOCUSED).put( KeyStroke.getKeyStroke("shift F2"), prevFocusAction.getValue(Action.NAME)); // Add actions component.getActionMap().put(nextFocusAction.getValue(Action.NAME), nextFocusAction); component.getActionMap().put(prevFocusAction.getValue(Action.NAME), prevFocusAction); // The actions public Action nextFocusAction = new AbstractAction("Move Focus Forwards") { public void actionPerformed(ActionEvent evt) { ((Component)evt.getSource()).transferFocus(); } }; public Action prevFocusAction = new AbstractAction("Move Focus Backwards") { public void actionPerformed(ActionEvent evt) { ((Component)evt.getSource()).transferFocusBackward(); } };
e607. Preventing a Component from Gaining the Focus e608. Preventing a Window from Gaining the Focus e609. Listening to All Focus Changes Between Components in an Application e610. Setting Focus Traversal Keys in a Component e611. Setting Focus Traversal Keys for the Entire Application e613. Modifying the Focus Traversal Order e614. Setting the Initial Focused Component in a Window e615. Finding the Next Focusable Component e616. Determining If a Focus Lost Is Temporary or Permanent e617. Determining the Opposite Component of a Focus Event e618. Validating a JTextField When Permanently Losing the Focus e619. Removing the Focus from the Application e620. Activating a Keystroke When Any Component in the Window Has Focus e621. Activating a Keystroke When Any Child Component Has Focus
© 2002 Addison-Wesley. |