代号一刷新表单

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 传递了一些值。为了填充TextAreas,我从数据库中提取数据并最初从我们的后端填充MultiButton Spinner,然后在用户选择一个项目后,它将根据保存在数据库中的选择进行填充。有没有办法以一次清除所有项目的方式清除所有这些项目,还是我必须一个接一个地清除每个项目?我看到了你给出的这个答案:***.com/a/49993410/5095571——这样可以吗? 如果您将它们全部放在一个容器中,那么简单的 removeAll 就可以了 谢谢;我意识到它们被填充到数据库需要一些调整,这似乎解决了这个问题。

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

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

php中如何防止刷新一次提交一次

form提交后刷新又提交一次,怎么解决,重复提交,求高人解答

毕业设计——Django项目网页刷新表单重复提交问题

在 codeigniter 中提交一次后,在每次刷新时停止表单提交

php如何避免刷新页面重复提交