如何刷新 lwuit 表单?

Posted

技术标签:

【中文标题】如何刷新 lwuit 表单?【英文标题】:How to refresh the lwuit form? 【发布时间】:2011-07-28 12:04:35 【问题描述】:

我在一个项目中工作,用户填写一份问卷,然后将答案提交到服务器。为简单起见,我每个屏幕只保留两个问题,单击下一个命令后,用户会得到下两个问题。我在这个项目中使用了 lwuit 框架。

为了减少内存需求,我只创建了一次 formquestLabel1ansCombo1questLabel2ansCombo2。并且它们的属性是根据当前帧(屏幕)设置的。 问题是,如果您在表单 2 中并且向下滚动到最后一个选项,然后单击下一个按钮,因为您向下滚动表单即使在下一个表单上也不会显示上部组件 尝试了很多东西。创建表单的新实例可能有效,但出于明显的记忆原因,我不想使用它,

还有其他解决方案吗?

提前致谢,

【问题讨论】:

即使在下一个表单上,表单也不显示上部组件您能否详细解释一下这个问题?您是否正在寻找类似Display.setCurrentItem 提供的功能? “请求将包含此项目的 Displayable 设为当前,滚动 Displayable 以使此项目可见,并可能将焦点分配给此项目....” @gnat:他需要使用 LWUIT,而不是 Java ME。 谢谢@gnat ...但是你建议的解决方案是lcdui框架,我正在使用lwuit并且只允许使用lwuit功能......我阅读了lcdui的Display类的文档,我只是需要一个类似的方法来完成我的任务...... 明白了。你检查Component/Container API了吗?我在 lwit 页面上看到的 javadocs 建议了一些语义相似的方法scrollComponentToVisiblescrollRectToVisible“如果此容器可滚动,请确保组件在滚动中可见...” 类似的东西 @gnat...非常感谢...它成功了...非常感谢您拯救了我的一天...上帝保佑你 【参考方案1】:

要使其滚动以使组件可见,请检查Component/Container API javadocs。我在 lwit 页面上看到这些建议了一些语义适合的方法 - scrollComponentToVisiblescrollRectToVisible“如果这个容器是可滚动的,请确保组件在滚动中可见......”类似的东西

  // above extracted from comment to an answer to make it more visible
  // for the case if some reader has similar problem

【讨论】:

【参考方案2】:

你试过form.revalidate()吗?因为这在您修改容器层次结构并需要重做布局时很有用。

更新:在下一个表单的第一个组件上使用 requestFocus();。它自动关注第一个(上)组件。

【讨论】:

是的,我已经尝试过了....调用层次结构是 1. form.addComponent() 乘以 2. form.revalidate() 3. firstComponent.requestFocus() 4. form.show( )..... 一切都顺利吗 ?还是我用错了? 请参阅我之前评论中的调用顺序...我在步骤 3 中调用 requestFocus()。 @Amit:您的层次结构是正确的。您是否在next 命令操作事件中再次显示了from 不,我不......顺便说一句,问题是通过@gnat建议的方法解决的......也感谢你的帮助......我真的很感激......【参考方案3】:

您可以使用 form.refreshTheme() 或 form.revalidate() 来刷新您的表单。如果您对任何特定容器进行了更新,那么也对容器执行相同操作。

【讨论】:

以上是关于如何刷新 lwuit 表单?的主要内容,如果未能解决你的问题,请参考以下文章

我做了一个表单提交页面,如何禁止刷新?

如何在 LWUIT 中的表单之间切换

如何在表单提交时防止表单在刷新时重新提交

当另一个表单关闭时如何刷新一个表单?

如何防止刷新后表单服务被删除?

如何在不刷新的情况下提交表单?