Pages

Java Text Fields Auto Select All On Focus

static class SelectAll extends TextAction {

        public SelectAll() {
            super("Select All");
            putValue(Action.ACCELERATOR_KEY, KeyStroke.getKeyStroke("control S"));
        }

        @Override
        public void actionPerformed(ActionEvent e) {
            JTextComponent component = getFocusedComponent();
            component.selectAll();
            component.requestFocusInWindow();
        }
    }

KeyboardFocusManager.getCurrentKeyboardFocusManager().addPropertyChangeListener("permanentFocusOwner", l);

PropertyChangeListener l = new PropertyChangeListener() {
        Component owner;
        Color background;

        @Override
        public void propertyChange(PropertyChangeEvent evt) {
            /*if ((owner != null && evt.getOldValue() == owner)) {
                owner.setBackground(background);
                owner = null;
            }*/
 /*
            if (evt.getNewValue() != null) {
                owner = (Component) evt.getNewValue();
                background = owner.getBackground();
                owner.setBackground(Color.YELLOW);
            }*/

            if (evt.getNewValue() instanceof JTextField) {
                SwingUtilities.invokeLater(new Runnable() {
                    public void run() {
                        JTextField textField = (JTextField) evt.getNewValue();
                        textField.selectAll();
                        oldtext = textField.getText();
                    }
                });

            }
        }
    };

    @Override
    public boolean dispatchKeyEvent(KeyEvent e) {
        if (e.getID() == KeyEvent.KEY_RELEASED) {
            if (FocusManager.getCurrentManager().getFocusOwner() instanceof JTextField) {
                //System.out.println("yess");
                if (e.getKeyCode() == KeyKodes.EscapeKey) {
                    ((JTextField) FocusManager.getCurrentManager().getFocusOwner()).setText(oldtext);
                    ((JTextField) FocusManager.getCurrentManager().getFocusOwner()).selectAll();
                }
            }
        }
        return false;
    }

To Use:

KeyboardFocusManager manager = KeyboardFocusManager.getCurrentKeyboardFocusManager();
        manager.addKeyEventDispatcher(this);

No comments:

Post a Comment