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