在JavaSwing中设置面板中文本字段的默认光标

在JavaSwing中设置面板中文本字段的默认光标,java,swing,textfield,Java,Swing,Textfield,我正在用Java制作一个使用JTextField的应用程序。现在,我想,只要我运行应用程序,光标就会自动放进去,这样用户就不必点击它然后写文本。我尝试过requestFocusInWindow(),但它不起作用。焦点首先转到Jframe中的面板,但我必须单击文本字段来编辑它。谁能帮我解决这个问题,真的很感激。非常感谢检查requestFocusInWindow()返回的内容。如果可能成功,则返回true;如果肯定失败,则返回false 另外,在调用requestFocusInWindow()时,

我正在用Java制作一个使用JTextField的应用程序。现在,我想,只要我运行应用程序,光标就会自动放进去,这样用户就不必点击它然后写文本。我尝试过requestFocusInWindow(),但它不起作用。焦点首先转到Jframe中的面板,但我必须单击文本字段来编辑它。谁能帮我解决这个问题,真的很感激。非常感谢

检查
requestFocusInWindow()
返回的内容。如果可能成功,则返回true;如果肯定失败,则返回false

另外,在调用
requestFocusInWindow()
时,请尝试等待直到
JTextField
的父项可见。根据我的经验,在父母出现之前调用该方法通常不起作用

这里有一段来自:

如果要确保某个特定组件获得焦点 第一次激活窗口时,您可以调用 在组件完成后,对组件执行requestFocusInWindow方法 已实现,但在显示帧之前

然后提供以下代码示例:

frame.pack(); // Realize the components.
button.requestFocusInWindow(); 
frame.setVisible(true); // Display the window.

我怀疑,当组件“实现”(无论这意味着什么)时,Java会自动委托关注点。我还怀疑,如果您不调用
pack()
,则在调用
setVisible(true)

之前,组件不会“实现”。这不是一个代码转储,而是您正在做的一个示例,它突出了您所遇到的问题。这将减少混乱和更好的响应。没有真正的方法知道组件何时实际显示在屏幕上。您可以使用
SwingUtilities.invokeLater
或提供某种方法,允许调用方在将组件添加到窗口(并使其可见)时通知您