【问题标题】:Should I use always requestFocusInWindow() instead of requestFocus()?我应该总是使用 requestFocusInWindow() 而不是 requestFocus() 吗?
【发布时间】:2018-07-09 21:17:44
【问题描述】:

我读到requestFocus() 有时会失败,因为它是基于平台的。

一般的经验法则是始终使用requestFocusInWindow() ?

顺便说一下,我的应用是专门为 macOS 开发的。

【问题讨论】:

  • “顺便说一句,我的应用程序是专门为 macOS 开发的” - 应该没什么区别,JavaDocs 明确推荐 requestFocusInWindow 而不是 requestFocus,不管原因

标签: java macos swing focus


【解决方案1】:

我读到 requestFocus() 有时会失败,因为它是 基于平台。

是的。这是对的。 From Java Docs the requestFocus()

请注意,不鼓励使用此方法,因为它的行为 平台相关。相反,我们建议使用 requestFocusInWindow(boolean).

由于依赖于平台,不建议您在 Linux 中构建,并且在 Windows 中无法按预期运行。

requestFocusInWindow()

此方法的焦点行为可以跨域统一实现 平台,因此强烈建议开发者使用它 尽可能使用 requestFocus 方法。依赖的代码 requestFocus 可能会表现出不同的焦点行为 平台。

我应该总是使用 requestFocusInWindow() 而不是 requestFocus() 吗?

这取决于。如果您希望您的应用仅在特定操作系统中运行,请使用 requestFocus() 如果您想成为多平台,请使用 requestFocusInWindow()

如有疑问,请务必查看文档。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-01-10
    • 2011-01-24
    • 1970-01-01
    • 2021-05-22
    • 2010-12-30
    • 2023-03-15
    • 2011-03-02
    • 2010-09-28
    相关资源
    最近更新 更多