在JavaSwing中设置面板中文本字段的默认光标
我正在用Java制作一个使用JTextField的应用程序。现在,我想,只要我运行应用程序,光标就会自动放进去,这样用户就不必点击它然后写文本。我尝试过requestFocusInWindow(),但它不起作用。焦点首先转到Jframe中的面板,但我必须单击文本字段来编辑它。谁能帮我解决这个问题,真的很感激。非常感谢检查在JavaSwing中设置面板中文本字段的默认光标,java,swing,textfield,Java,Swing,Textfield,我正在用Java制作一个使用JTextField的应用程序。现在,我想,只要我运行应用程序,光标就会自动放进去,这样用户就不必点击它然后写文本。我尝试过requestFocusInWindow(),但它不起作用。焦点首先转到Jframe中的面板,但我必须单击文本字段来编辑它。谁能帮我解决这个问题,真的很感激。非常感谢检查requestFocusInWindow()返回的内容。如果可能成功,则返回true;如果肯定失败,则返回false 另外,在调用requestFocusInWindow()时,
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
或提供某种方法,允许调用方在将组件添加到窗口(并使其可见)时通知您