呼叫transferFocus或requestFocus?

时间:2010-04-26 00:44:34

标签: java swing focus

在我的应用程序中,我得到一个要关注的组件, 它可以是一个jpanel,可以是一个jbutton或一个用户自定义组件

我怎么知道何时调用transferFosus,以及何时调用requestFocus

谢谢你

3 个答案:

答案 0 :(得分:3)

transferFocus()将焦点发送到下一个组件。 另请注意 transferFocus()将始终将焦点转移到前进方向。

requestFocus()将焦点发送到调用组件。但是,不能保证这会成功。焦点行为在某种程度上取决于平台。

获得焦点的推荐提示是使用requestFocusInWindow()。参考this post - 在使用焦点时可能非常方便。

答案 1 :(得分:1)

如果要根据焦点顺序提前对焦,请使用transferFocus()。 requestFocus()用于将焦点显式设置为组件。

Focus on Swing

中的一些背景阅读

答案 2 :(得分:0)

您很少需要调用它,因为它通常适合让用户的键盘/鼠标操作确定焦点。但是,transferFocus会将焦点从您的组件中移开,而requestFocus会将焦点转移到您的组件上。