代号一刷新表单
Posted
技术标签:
【中文标题】代号一刷新表单【英文标题】:Codename One refresh form 【发布时间】:2019-07-29 13:26:41 【问题描述】:在我的应用程序中,我想重新加载一个表单。问题是每次我重新加载表单时,现有项目都会保留在屏幕上,随后会添加新项目。
例如,有两个按钮:buttonOne 和 buttonTwo。两者都在一个容器内。容器被添加到表单中。
当我重新加载表单时,buttonOne 和 buttonTwo 会再次添加到已经存在的两个按钮中。当我再次重新加载时,按钮一和二在屏幕上出现了四次。
我试过了:
form.removeAll();
containerButton.removeAll();
containerButton.remove();
form.repaint();
form.refreshTheme();
// reload the form
channels ();
// the class
public Form form = new Form(new BoxLayout(2));
public void channels()
container.add (buttonOne).add(buttonTwo);
form.add (containerButton);
这种方法不能解决问题。我错过了什么?
提前感谢您的任何回复。
【问题讨论】:
【参考方案1】:全部删除将从Container
(在本例中为表单内容窗格)中删除组件,但不会通过层次结构删除它们。
两者:
form.repaint();
form.refreshTheme();
更改层次结构时使用的 API 不正确。您需要使用revalidate()
或animateLayout()
。
“重新加载”不是 Codename One 中存在的概念,因为小部件不知道您的数据。一个常见的万无一失的技巧是从头开始重新创建表单并显示它。
【讨论】:
与重新加载或重新创建表单有关——我怎样才能让小部件知道数据的变化?这可能吗?在将输入的数据提交到我们的服务器后,我正在尝试清除表单,但项目仍然存在。谢谢。 这取决于您创建/加载表单的方式 谢谢@Shai Almog。我使用自定义构造函数创建了Form
,并从先前的Form
传递了一些值。为了填充TextArea
s,我从数据库中提取数据并最初从我们的后端填充MultiButton Spinner
,然后在用户选择一个项目后,它将根据保存在数据库中的选择进行填充。有没有办法以一次清除所有项目的方式清除所有这些项目,还是我必须一个接一个地清除每个项目?我看到了你给出的这个答案:***.com/a/49993410/5095571——这样可以吗?
如果您将它们全部放在一个容器中,那么简单的 removeAll 就可以了
谢谢;我意识到它们被填充到数据库需要一些调整,这似乎解决了这个问题。以上是关于代号一刷新表单的主要内容,如果未能解决你的问题,请参考以下文章
form提交后刷新又提交一次,怎么解决,重复提交,求高人解答