2013-09-20 2 views
4

Я делаю небольшое приложение на Java, которое использует JTextField. Теперь, я хочу, как только я запустил приложение, курсор будет автоматически помещен в него, чтобы пользователь не должен был нажимать на него, а затем писать текст. Я пробовал почти все, что нашел в сети: setCaretPosition (0), grabFocus(), requestFocusInWindow() или requestFocus(), но никто из них не работал! Я в отчаянии, не могли бы вы помочь мне решить эту проблему? Большое спасибоSet Cursor On A JTextField

+0

Возможный дубликат http://stackoverflow.com/questions/6723257/how-to-set-focus-on-jtextfield – BevynQ

+2

Это довольно сложно, потому что на самом деле у вас мало или вообще нет идеи о том, когда приложение станет доступный пользователю. Вы можете попробовать использовать 'SwingUtilities.invokeLater' и сделать запрос' requestFocusInWindow' ... – MadProgrammer

ответ

6

По умолчанию фокус переходит к первому компоненту в окне.

Если текстовое поле не первый компонент, то вы можете использовать:

textField.requestFocusInWindow(); 

однако вы должны вызвать этот метод ПОСЛЕ окно видно.

Если вы хотите указать компонент с фокусом, прежде чем окно станет видимым, вы можете использовать подход RequestFocusListener от Dialog Focus.

+0

Ничего себе, это сработало! Действительно, я сначала использовал JLabel, как «Вставить что-то», а затем JTextField. Не знал, что должен использовать метод после того, как окно видно, и никто не упоминал об этом. =/Спасибо man –

+0

JLabel не фокусируется, поэтому ваше текстовое поле должно автоматически фокусироваться. У вас должна быть другая проблема с вашим кодом. – camickr

+0

Ну, я сделал пример, удалив JLabel вообще, и все еще JTextField не был сфокусирован, то есть вам нужно было щелкнуть, а затем написать на нем. Не знаю, что случилось, но requestFocusInWindow() работал. –