4

我正在用 Java 制作一个使用 JTextField 的小型应用程序。现在,我希望,一旦我运行应用程序,光标就会自动放置在其中,这样用户就不必单击它然后编写文本。我已经尝试了我在网上找到的几乎所有东西:setCaretPosition(0)、grabFocus()、requestFocusInWindow() 或 requestFocus(),但它们都不起作用!我很绝望,你能帮我解决这个问题吗?非常感谢

4

2 回答 2

10

默认情况下,焦点将转到 Window 上的第一个组件。

如果文本字段不是第一个组件,那么您可以使用:

textField.requestFocusInWindow();

但是,您必须在窗口可见后调用此方法。

如果窗口不可见,那么您应该能够使用 Java lambda:

EventQueue.invokeLater( () -> textField.requestFocusInWindow() );

上面的代码将放在 . 的末尾Event Dispatch Thread (EDT),所以它应该在窗口可见后执行。

或者,您可以使用Dialog FocusRequestFocusListener中的方法。

请注意,既然 Java lambda 存在,在大多数情况下这将是多余的,但它仍然有一个地方可用于设置模式对话框的焦点。

于 2013-09-20T04:40:07.557 回答
1

这适用于光标位置 textField.requestFocus();

于 2018-06-12T10:30:58.907 回答