Как сделать так, чтобы текстовая область Swing имела фокус сразу после загрузки? - PullRequest
1 голос
/ 21 апреля 2011

Я создал простую панель Swing, которая при загрузке занимает все окно моего приложения. Он содержит две JTextArea s и несколько кнопок. Я хочу, чтобы одна из текстовых областей имела фокус при загрузке панели, чтобы пользователь мог сразу же начать печатать вместо того, чтобы сначала нажимать на текстовую область. Как мне этого добиться?

Ответы [ 3 ]

4 голосов
/ 21 апреля 2011

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

Если это не тот компонент, который вы хотите сфокусировать, тогда вам нужно запросить фокус, как только окно будет реализовано.

Пример Dialog Focus показывает несколько способов сделать это.

2 голосов
/ 21 апреля 2011

См. Здесь Документация , которая содержит точно то, что вы ищете (я думаю):

Компоненту также может быть дан программный фокус, например, когда он содержитрамка или диалоговое окно становится видимым.Этот фрагмент кода показывает, как навести фокус на конкретный компонент каждый раз, когда окно получает фокус:

//Make textField get the focus whenever frame is activated.
frame.addWindowFocusListener(new WindowAdapter() {
    public void windowGainedFocus(WindowEvent e) {
        textField.requestFocusInWindow();
    }
});
0 голосов
/ 24 мая 2016

Вам просто нужно вызвать метод requestFocus класса Jcomponent,

public void requestFocus ()

На компоненте, который вы хотите сфокусировать. И, пожалуйста, убедитесь, что вы вызываете этот метод после вызова setVisible для его родительского компонента.

Например: - У вас есть Jframe, в который вы добавили JTextArea, поэтому после вызова вам следует позвонить в следующем порядке: -

jframe.setVisible (истина); jarea.requestFocus ();

...