如何刷新 lwuit 表单?
Posted
技术标签:
【中文标题】如何刷新 lwuit 表单?【英文标题】:How to refresh the lwuit form? 【发布时间】:2011-07-28 12:04:35 【问题描述】:我在一个项目中工作,用户填写一份问卷,然后将答案提交到服务器。为简单起见,我每个屏幕只保留两个问题,单击下一个命令后,用户会得到下两个问题。我在这个项目中使用了 lwuit 框架。
为了减少内存需求,我只创建了一次 form
、questLabel1
、ansCombo1
、questLabel2
和 ansCombo2
。并且它们的属性是根据当前帧(屏幕)设置的。 问题是,如果您在表单 2 中并且向下滚动到最后一个选项,然后单击下一个按钮,因为您向下滚动表单即使在下一个表单上也不会显示上部组件 尝试了很多东西。创建表单的新实例可能有效,但出于明显的记忆原因,我不想使用它,
还有其他解决方案吗?
提前致谢,
【问题讨论】:
即使在下一个表单上,表单也不显示上部组件您能否详细解释一下这个问题?您是否正在寻找类似Display.setCurrentItem 提供的功能? “请求将包含此项目的 Displayable 设为当前,滚动 Displayable 以使此项目可见,并可能将焦点分配给此项目....” @gnat:他需要使用 LWUIT,而不是 Java ME。 谢谢@gnat ...但是你建议的解决方案是lcdui框架,我正在使用lwuit并且只允许使用lwuit功能......我阅读了lcdui的Display类的文档,我只是需要一个类似的方法来完成我的任务...... 明白了。你检查Component
/Container
API了吗?我在 lwit 页面上看到的 javadocs 建议了一些语义相似的方法scrollComponentToVisible
、scrollRectToVisible
。 “如果此容器可滚动,请确保组件在滚动中可见...” 类似的东西
@gnat...非常感谢...它成功了...非常感谢您拯救了我的一天...上帝保佑你
【参考方案1】:
要使其滚动以使组件可见,请检查Component
/Container
API javadocs。我在 lwit 页面上看到这些建议了一些语义适合的方法 - scrollComponentToVisible
、scrollRectToVisible
。 “如果这个容器是可滚动的,请确保组件在滚动中可见......”类似的东西
// 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 表单?的主要内容,如果未能解决你的问题,请参考以下文章