gpt4 book ai didi

java - 如何全局修改/访问 GWT 中的小部件?

转载 作者:塔克拉玛干 更新时间:2023-11-02 20:17:15 25 4
gpt4 key购买 nike

我昨天才开始使用 GWT,所以我可能没有使用正确的机制来解决该问题。因此,我将尝试准确解释我正在尝试做什么(针对一个简单的问题)以及我想出的 2 个解决方案来解决该问题。

问题:

记住可以通过其他小部件更新的索引。让我们使用焦点来表示它。

[button 1]
[button 2] [button A]
[button 3]
  • 按钮 [1..3] 和 [A] 不在同一个类中,需要使用 DOM 使用 id 查找元素。原因是这 2 个 View 需要正交。
  • 我们可以使用向上/向下键将焦点从按钮 1 移动到按钮 3。
  • 如果我们在按钮 [1..3] 上并按向右,我们将转到按钮 A。
  • 如果我们在按钮 A 上并按下左键,我们会转到之前获得焦点的按钮。

我们要做的是在按下右键时保存或设置焦点索引。

方案一:全局变量

我通常不喜欢全局变量,但在某些情况下它很方便。例如,通过使用在 javascript 中全局定义的字典 (Dictionary.getDictionary),我可以在这种情况下使用“焦点事件”将当前索引保存在其中。

因此,在按键事件中,当 left 被触发时,我将只读取字典中的值。

我还没有测试过,但我认为它应该可以工作。

方案二:用元素设置值

Element element = DOM.getElementById("button id A");
element.<setFocusLeftKey>("button id [1..3]");

这里我想实现的只是在“onFocus”事件中,我会简单地设置那个按钮的值。

  • 那么是否可以使用元素来转换/查找对象?我认为如果没有简单的方法,可能是因为不推荐。
  • 是否有更简单的方法/其他方法来实现它?

那么,有什么想法或解决方案吗?

提前致谢。

附言我还没有找到更好的标题,所以如果有任何建议,请在评论中提出,我会更新。

最佳答案

使用 ID 绝对不是在 GWT 中执行此操作的建议方法。你说你需要这种机制来保持你的观点彼此正交。这是高尚的,但在 GWT 中,您可以通过使用另一种资源(一个 EventBus,在 SimpleEventBus 中实现)来实现,该资源相互隐藏不同的组件。事实上,我认为通过 ID 查找元素会强烈耦合两个 View 并且很臭。

武装您的 EventBus,您只需创建并触发自定义事件,让 View (或者,更好的是,它们的呈现器)相互通信。例如,您可以在此处拥有:NavigateRightFromButtonsEventNavigagteLeftFromButtonA 事件。

但是,根据您应用的大小(或作为第一个实验),您可以决定将两个 View 结合起来。在这种情况下,只需将按钮列表的 View 传递给按钮 A 的 View ,反之亦然。这并不比依赖全局 ID 更糟糕。

无论您选择哪种机制(事件总线或将 View 连接在一起),您现在都应该可以直接访问要突出显示的小部件的实例。要聚焦,只需对其调用 setFocus(true)

关于java - 如何全局修改/访问 GWT 中的小部件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5479199/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com