vaadin

如果您使用过GWT,那么您可能会发现UiBinder对于设计复杂的UI很有用。 在有关Vaadin的系列文章中,我们希望在Vaadin和GWT之间得出相似之处。 Vaadin提供了多种开箱即用的工具和组件,用于构建复杂且美观的UI。 其中之一是可以像UiBinder那样声明性地构建UI。 与GWT相比,Vaadin提供了直接使用.html文件的可能性。

编程方式

与GWT中一样,Vaadin UI也可以通过编程方式构建。 例如,假设我们要构建一个简单的表单以将任务添加到待办事项列表。 以编程方式执行此操作的一种方法:

public class MainUI extends UI {@Override
protected void init(VaadinRequest request) {
// TODO Auto-generated method stub
FormLayout layout = new FormLayout();
TextField taskTitle = new TextField();
taskTitle.setCaption("Title");
taskTitle.setIcon(VaadinIcons.CHEVRON_DOWN);
TextArea taskDescription = new TextArea();
taskDescription.setCaption("Description");
taskDescription.setIcon(VaadinIcons.LINES);
DateField taskDate = new DateField();
taskDate.setCaption("Date");Button button = new Button("Add");
button.setIcon(VaadinIcons.PLUS);layout.addComponent(taskTitle);
layout.addComponent(taskDescription);
layout.addComponent(taskDate);
layout.addComponent(button);
setContent(layout);
}}

结果:

声明方式

如果用户界面很复杂且具有嵌套组件,则声明方法可能会很有用。 Vaadin开发了可以绑定到Java组件HTML自定义元素。 自定义元素以vaadin-开头。 元素的其余名称可以通过分隔单词并使其小写来从java类中提取,如Vaadin网站上所详述。 以声明方式创建UI的第一步是创建html文件,我们将其命名为Form.html:

<!doctype html>
<html>
<head>
<meta charset="UTF-8">
<meta name="vaadin-version" content="8.0.5">
</head>
<body>
<vaadin-form-layout>
<vaadin-text-field icon="fonticon://Vaadin-Icons/e7ce" caption="Task Name" _id="todoTitle">
</vaadin-text-field>
<vaadin-text-area icon="fonticon://Vaadin-Icons/e7ef" _id="todoDescription">
</vaadin-text-area>
<vaadin-date-time-field caption="Date" _id="todoDate">
</vaadin-date-time-field>
<vaadin-button icon="fonticon://Vaadin-Icons/e801"_id="todoButton">
Add
</vaadin-button>
</vaadin-form-layout>
</body>
</html>

第二步是创建将绑定到此文件的java类。

@DesignRoot
public class Form extends FormLayout {public Form() {Design.read("Form.html", this);}
}

现在我们可以将其用作UI类中的常规组件:

public class MainUI extends UI {@Override
protected void init(VaadinRequest request) {
setContent(new Form());
}}

要将.html的字段绑定到java类中的字段,需要设置_id属性。 例如,绑定我们的文本框:

<vaadin-text-field icon="fonticon://Vaadin-Icons/e7ce" caption="Task Name" _id="todoTitle">
</vaadin-text-field>

然后我们可以将其添加到java文件中,它将被自动绑定:

@DesignRoot
public class Form extends FormLayout {TextField todoTitle;public Form() {Design.read("Form.html", this);//we can directly use it without initialization}
}

Vaadin还提供用于交互设计UI的有趣工具: Vaadin Designer 。 Vaadin Designer允许使用鼠标和拖放来设计UI。 我们仅将该工具用于演示目的,因此我们无法真正对其进行评估。 Vaadin-Designer可以通过减少构建UI的时间和处理“样板”部分来帮助提高生产率。 不幸的是,Vaadin Designer不是免费的,其增值取决于一个项目到另一个项目。

带走

以编程方式设计UI并不总是很方便。 Vaading有一种有趣的方法以声明方式构建UI。 HTML自定义元素提供了一种直接将.html文件链接到Java的方法。 也许这是GWT开发人员探索的道路,因为UiBinder将在下一个3.0版本中删除。

翻译自: https://www.javacodegeeks.com/2017/07/vaadin-tip-building-uis-declaratively.html

vaadin

vaadin_Vaadin提示:以声明方式构建UI相关推荐

  1. Vaadin提示:以声明方式构建UI

    如果您使用了GWT,那么您可能会发现UiBinder对于设计复杂的UI很有用. 在有关Vaadin的系列文章中,我们希望在Vaadin和GWT之间得出相似之处. Vaadin提供了多种开箱即用的工具和 ...

  2. Android Studio(10)---使用 Layout Editor 构建 UI

    使用 Layout Editor 构建 UI 在 Android Studio 的 Layout Editor 中,您可以通过将小部件拖动到视觉设计编辑器来快速构建布局,无需手动编写布局 XML.此编 ...

  3. 安卓ui xml_创建声明性XML UI语言

    GUI开发可能是一项艰巨的任务. GUI框架的文档记录并不总是很好,所需的代码量可能会快速增长,从而减慢了开发流程. 最重要的是,支持这些GUI框架的拖放工具和IDE通常可以引导GUI软件开发人员创建 ...

  4. Eoapi :我们打算用开源的方式构建 API 生态系统

    Eotalk 是由 Eolink 发起的泛技术聊天活动,每期会邀请一些技术圈内的大牛聊聊天,聊些关于技术.创业工作.投融资等热点话题. 第一期,由 Eoapi 的核心开发者秦圆圆和 Eolink CE ...

  5. 三、const常量声明方式

    cosnt是es6中常量的声明方式,声明方法和var.let声明方式一样,但是有点不同的是,const声明方式必须立即初始化变量,并且也不能在后面改变他的值 const foo; // SyntaxE ...

  6. 使用控件时提示“未声明标识符“的解决方法

    使用控件时提示"未声明标识符"的解决方法 参考文章: (1)使用控件时提示"未声明标识符"的解决方法 (2)https://www.cnblogs.com/Ro ...

  7. Xamarin XAML语言教程对象元素的声明方式

    Xamarin XAML语言教程对象元素的声明方式 XAML的对象元素的声明有两种形式,分别为包含属性的特性语法形式以及对象元素语法形式.在1.4小节中,我们看到了其中一种对XAML对象元素的声明方式 ...

  8. KMM Kotlin expect的几种声明方式

    前言 Kotlin的expect关键字一般用在多平台上,比如在多平台项目中的common中声明方法签名,然后由不同的平台去实现该方法,从而实现一个多平台(跨平台)方法. 创建KMM项目可以参考: KM ...

  9. 微信小程序,引用扩展组件提示“没有找到可以构建的NPM包”

    在微信小程序开发中,需要引入扩展组件的时候,使用npm引入之后,却提示"没有找到可以构建的NPM包",查了很多资料,原来是需要参与构建的npm在miniprogramroot目录. ...

最新文章

  1. 深度优先搜索找迷宫的出路
  2. 西南石油大学计算机科学校区,任冬梅 - 西南石油大学 - 计算机科学学院
  3. 使用 Blazor 开发内部后台(四):基于Card组件快速搭建导航首页
  4. shell遍历文件夹
  5. SpringBoot整合阿里Druid数据源及Spring-Data-Jpa
  6. lombok标签_微服务之:springboot入门、Swagger、Lombok使用
  7. 锂离子电池性能测试软件,锂离子电池的常规性能测试方式介绍
  8. 使用HQL语句的按照参数名字查询数据库信息的时候 “=:”和参数之间不能存在空格,否则会报错...
  9. Android入门之——百度地图开发(二)定位当前位置
  10. spring使用之旅 ---- bean的装配
  11. 计算机进入安全模式,电脑无法进入安全模式如何解决
  12. HDU 6143 (容斥)
  13. C语言求任意数的阶层
  14. 【ROS入门教程】---- 01 ROS介绍
  15. 从小市值因子策略入手,带你入门量化投资 (附年化收益率77.83%策略)
  16. SLAM总结(三)-传感器之各传感器特性
  17. SpringBoot项目云端部署
  18. 设置了监视哨的顺序查找算法效率高?你确定吗?
  19. Android getIntent.getString();为空
  20. ubuntu用户和权限介绍

热门文章

  1. P3348-[ZJOI2016]大森林【LCT】
  2. ATcoder-Replace Digits【线段树】
  3. UVALive 8518 - Sum of xor sum
  4. 20、java中的类加载机制
  5. Sentinel(十四)之控制台
  6. 什么是线程安全,你真的了解吗
  7. 数据库的这些性能优化,你做了吗
  8. SpringCloud注册中心高可用搭建
  9. vue前期知识点笔记
  10. 你在学校我安排了你没有做到最多凶你一顿,在公司不一样,直接得让走人!...