Событие Focus Gained и Focus Lost - PullRequest
       14

Событие Focus Gained и Focus Lost

1 голос
/ 17 декабря 2011

У меня есть 4 JTextfields в форме Java-свинга.Проблема в том, что мне нужно переместить Focus с одного JTextField на другой с помощью кода Java, а не с помощью клавиши табуляции.

Если Фокус, полученный JTextField2, означает, что содержимое в JTextField2 должно быть выбрано.Я не знаю, как это сделать, пожалуйста, поставьте свой правильный код, связанный с этой проблемой

Ответы [ 2 ]

1 голос
/ 17 декабря 2011

это может быть немного сложнее

вам нужно обернуть и отложить Action или ActionListener в invokeLater() и поместить внутрь (самый безопасный способ этоустановить следующие строки кода)

  • JTextField2.setText(JTextField2.getText);

и

  • JTextField2.selectAll();

отредактировать в @Andrew Thompson

private FocusListener fcsListener = new FocusListener() {

        @Override
        public void focusGained(FocusEvent e) {
            dumpInfo(e);
        }

        @Override
        public void focusLost(FocusEvent e) {
            //dumpInfo(e);
        }

        private void dumpInfo(FocusEvent e) {
            System.out.println("Source  : " + name(e.getComponent()));
            System.out.println("Opposite : " + name(e.getOppositeComponent()));
            System.out.println("Temporary: " + e.isTemporary());
            Component c = e.getComponent();//works for editable JComboBox too
            if (c instanceof JFormattedTextField) {
                ((JFormattedTextField) c).selectAll();
            } else if (c instanceof JTextField) {
                ((JTextField) c).selectAll();
            }//both methods not correct required setText(getText()) inside invokeLater
        }

        private String name(Component c) {
            return (c == null) ? null : c.getName();
        }
    };
1 голос
/ 17 декабря 2011

Вы можете позвонить requestFocusInWindow() для текстового поля, которое вы хотите сфокусировать.

...