gpt4 book ai didi

java - 重绘 GWT 页面中的容器或单个动态元素?

转载 作者:太空宇宙 更新时间:2023-11-04 08:28:22 24 4
gpt4 key购买 nike

我正在开发一个 GWT 应用程序(我对 GWT 还很陌生,所以这是对最佳实践的请求;我在 SO 或其他地方没有找到任何相关答案),其中需要时间表。该时间线(带有描述、标签、交互句柄和绘图)驻留在其自己的容器中( Panel )。

          [<] [now] [>]             // Interaction (navigation)
2007 2008 2009 2010 // Labels
| | | |
+ Group 1 // Collapsible groups
- Group 2
Item 2a ===== == // Item with plots (plots are wrapped in container per Item)
Item 2b ===== === =
-Group 3
Item 3a ===
Item 3b ===

现在,当用户导航时间线(使用按钮向前或向后移动)时,我需要重新计算布局的一些元素:

  • 标签需要重新计算/重新定位
  • 绘图需要重新计算/重新定位。绘图基于一组 Timeslot 元素(扩展 Widget、属性 dateStartdateEnd),这些元素已经与 Item 相关,而 Item 又与 Group 相关。

可折叠面板是 DisclosurePanel s。

据我所知,我现在有两种处理导航的选项:

  1. 我可以 clear()容器面板并进行完整的重绘。为此,我需要保留所有组的状态(折叠/展开)。 (顺便说一句,组和项目在整个期间都是静态的!)这将带来一次大的重画
  2. 我可以让绘图容器(每个 Item 都有自己的 TimeslotContainer,即 FlowPanel )保存对其所有 Timeslot 的引用,然后让每个 TimeslotContainer 根据当前时间跨度重新绘制自身(即过滤和定位相关的 Timeslot)。这将进行几次较小的重绘(每个展开的Group每个Item一次),优点是DisclosurePanel将被保留,从而维持它们自己的状态。

我倾向于采用第二种解决方案。但是这方面有什么最佳实践吗?我是否遗漏了一些常见问题?

最佳答案

如果组和项目是静态的,我还会推荐第二种方法。
DOM 操作(构造等)实际上是 GWT 应用程序中最昂贵的函数(性能方面),因此这些 DOM 操作应保持在最低限度。
不过,我认为性能在这里可能不是一个大问题,因为 DOM 元素的数量相对较少。

尽管如此,我仍然认为第二种方法更好。您不必存储组和项目的状态,并且由于它们是静态的,因此重绘它们并没有意义。

我只能想到第一种方法的一个优点:只有一种相对简单的绘图功能。在第二种方法中,所有 TimesSlotContainer 都必须实现一个函数以便重绘自身,并且还考虑时间跨度的位置和上下文。该函数可能比一个大的重绘函数更复杂。

关于java - 重绘 GWT 页面中的容器或单个动态元素?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8034111/

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