从 TextField 移除焦点后如何刷新鼠标光标?

Posted

技术标签:

【中文标题】从 TextField 移除焦点后如何刷新鼠标光标?【英文标题】:How do I refresh the mouse cursor after I remove focus from a TextField? 【发布时间】:2017-03-31 08:39:33 【问题描述】:

如果用户键入 ESC 或 ENTER,或者将焦点放在其他地方,我想删除文本字段上的焦点和选择。因此我这样做:

        stage.focus = null;

        textField.type = TextFieldType.DYNAMIC;
        textField.selectable = false;
        textField.mouseEnabled = false;

问题是,如果鼠标在可编辑文本字段上,鼠标处于 IBEAM 模式(插入光标)并保持在 IBEAM 模式,即使在上面的命令之后,直到我稍微移动鼠标,此时它返回到 AUTO 状态。

我想强制鼠标更新自身并满足 AUTO 状态,但无论我如何确保文本字段被禁用,它都不会自行消失,只有在我移动鼠标一点之后。

【问题讨论】:

【参考方案1】:

您评论中的最简单答案:

所以我在摆弄你的建议,对于 lul,使用 Mouse.hide() 然后 Mouse.show() 并且它起作用了。删除了 hide(),它只适用于 Mouse.show()!猜猜它会刷新鼠标光标。不眨眼,完美运行

我原来的回答:

这是一种解决方法,但实施起来应该不会太难。希望有人提供本机 API 解决方案。

    运行您发布的代码 然后让光标不可见 然后将自定义光标放在鼠标位置(如果您不介意光标消失,则可选) 在MouseEvent.MOUSE_MOVE 上删除您的自定义光标,并使光标再次可见。

我怀疑您是否需要我为您编写此代码,但如果您认为此方法适合您,并且您在实施此技术时遇到问题,请告诉我。

如果您担心不同的系统具有不同的鼠标图标,然后会突然获得您的自定义图标,那么简单的解决方案就是始终使用您的自定义光标。您可以将其设计成您喜欢的样子;要么模仿 Windows 操作系统,要么使其独一无二。

【讨论】:

所以我在摆弄你的建议,对于 luls,使用 Mouse.hide() 然后 Mouse.show() 并且它起作用了。删除了 hide(),它只适用于 Mouse.show()!猜猜它会刷新鼠标光标。不眨眼,完美运行

以上是关于从 TextField 移除焦点后如何刷新鼠标光标?的主要内容,如果未能解决你的问题,请参考以下文章

如何从 UITextField 中移除焦点?

android 中如何设置焦点的位置。

使用 .focused() 点击不同视图时如何删除 TextField 焦点?

Swing下,鼠标点击组件不是自动获得焦点的么?

如何在 Flutter 中完全取消对 TextField 的关注,而无需稍后返回焦点

【缩放】实现svg以鼠标为焦点缩放