texto por orden obtener linea leer foco con cambiar java swing netbeans

java - por - Mover el foco desde JTextArea usando la tecla de tabulación



obtener texto de un textarea java (1)

De acuerdo con esta clase :

/** * Some components treat tabulator (TAB key) in their own way. * Sometimes the tabulator is supposed to simply transfer the focus * to the next focusable component. * <br/> * Here s how to use this class to override the "component''s default" * behavior: * <pre> * JTextArea area = new JTextArea(..); * <b>TransferFocus.patch( area );</b> * </pre> * This should do the trick. * This time the KeyStrokes are used. * More elegant solution than TabTransfersFocus(). * * @author kaimu * @since 2006-05-14 * @version 1.0 */ public class TransferFocus { /** * Patch the behaviour of a component. * TAB transfers focus to the next focusable component, * SHIFT+TAB transfers focus to the previous focusable component. * * @param c The component to be patched. */ public static void patch(Component c) { Set<KeyStroke> strokes = new HashSet<KeyStroke>(Arrays.asList(KeyStroke.getKeyStroke("pressed TAB"))); c.setFocusTraversalKeys(KeyboardFocusManager.FORWARD_TRAVERSAL_KEYS, strokes); strokes = new HashSet<KeyStroke>(Arrays.asList(KeyStroke.getKeyStroke("shift pressed TAB"))); c.setFocusTraversalKeys(KeyboardFocusManager.BACKWARD_TRAVERSAL_KEYS, strokes); } }

Tenga en cuenta que patch() puede ser aún más corto, de acuerdo con Joshua Goldberg en los comentarios , ya que el objetivo es recuperar los comportamientos predeterminados anulados por JTextArea :

component.setFocusTraversalKeys(KeyboardFocusManager.FORWARD_TRAVERS‌​AL_KEYS, null); component.setFocusTraversalKeys(KeyboardFocusManager.BACKWARD_TRAVERS‌​AL_KEYS, null);

Esto se usa en la pregunta " ¿Cómo puedo modificar el comportamiento de la tecla de tabulación en un JTextArea ? "

La implementación previa involucró efectivamente a un Listener , y un transferFocus() :

/** * Override the behaviour so that TAB key transfers the focus * to the next focusable component. */ @Override public void keyPressed(KeyEvent e) { if(e.getKeyCode() == KeyEvent.VK_TAB) { System.out.println(e.getModifiers()); if(e.getModifiers() > 0) a.transferFocusBackward(); else a.transferFocus(); e.consume(); } }

e.consume(); podría haber sido lo que te perdiste para que funcione en tu caso.

Como dije, quiero cambiar el comportamiento predeterminado de TAB dentro de un JTextArea (para que actúe como un JTextField o un componente similar)

Aquí está la acción del evento

private void diagInputKeyPressed(java.awt.event.KeyEvent evt) { if(evt.KEY_PRESSED == java.awt.event.KeyEvent.VK_TAB) { actionInput.transferFocus(); } }

Y aquí está el oyente

diagInput.addKeyListener(new java.awt.event.KeyAdapter() { public void keyPressed(java.awt.event.KeyEvent evt) { diagInputKeyPressed(evt); } });

Lo intenté evt.KEY_TYPED también sin alegría.

¿Algunas ideas?

edición rápida: también he intentado requestFocus() en lugar de transferFocus()