【问题标题】:How to navigate page with Vaadin menubar?如何使用 Vaadin 菜单栏导航页面?
【发布时间】:2014-11-22 11:19:11
【问题描述】:

这是我使用 java 的第一步,我使用了 grails 和 vaadin 插件。我想用菜单栏导航制作简单的应用程序,所以我有一些 Vaadin 示例: http://demo.vaadin.com/sampler-for-vaadin6#BasicMenuBar

创建了一些命令:

edit.addItem("Cut1", menuCommand1);
edit.addItem("Cut1", menuCommand1);

每个命令只是从另一个示例中绘制表格:

http://demo.vaadin.com/sampler-for-vaadin6#TableHeaderIcons

不幸的是,每次我点击菜单项时,它都会在另一张桌子下绘制一张桌子,但我所期望的是绘制每张桌子来代替前一张。 如何做到这一点?

【问题讨论】:

  • 也许您将项目保存在数据库中,然后更新为新项目?在放置新对象之前尝试删除所有内容。
  • 虽然 vaadin6 采样器中的许多事情仍然适用于 vaadin7,但您最好从新的 demo.vaadin.com/sampler 中挑选示例/代码/灵感

标签: grails vaadin menubar redraw


【解决方案1】:

vaadin 的 UI 以状态(在会话中)存储在服务器上。如果您添加几个项目,除非被删除,否则它们会保留。所以例如如果你想更换桌子,你有两个选择。要么removeAllComponents,然后添加新表格,或者如果您拥有原始表格,那么您可以在包装布局中replaceComponent(很可能是VerticalLayout?)。

如果表格只是要更改内容,那么您最好只更改/修改表格的数据源。

【讨论】:

  • 我是否需要在每次单击菜单中的某些内容时创建我的菜单栏?
  • 不,菜单栏将成为状态的一部分(当然,除非您将菜单栏添加到与表格相同的布局中,并且您现在在该布局上调用 removeAllComponents)。
  • 我认为 public void replaceComponent(Component oldComponent, Component newComponent) 是一种方法,我只需要弄清楚如何存储“最后选择的组件”。
  • 如果您知道它的最后一个组件或除第一个之外的所有组件,则容器还具有按索引和迭代器的 getter。很常见的一种将数据存储在私有变量中。更高级的用例是使用导航器(在您的情况下,这将导致为它编写渲染器——稍微高级一些)
  • 我移动了一些行,现在它可以与 removeAllComponents 一起使用,因此不需要 Navigator :-)。不,我正在努力研究“如何用数据填充表格,并使其可编辑”。感谢您的所有帮助。
猜你喜欢
  • 1970-01-01
  • 2021-12-22
  • 2016-09-03
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多