跳至主要内容

UI 组件

业务界面的每个部分, Java 中已就绪。

webforJ 是面向企业 Web 应用的全栈 Java 框架:整个应用(包括界面)都用 Java 构建。它的组件涵盖布局、数据录入、对话框、数据展示和反馈,每个组件都是一个 Java 类,可供创建、配置并添加到布局中。

图库中的组件
57
类型化 HTML 元素
29
内置主题
3
按用途分组
5
  • AppLayout 组件AppLayout 组件
  • Button 组件Button 组件
  • ChoiceBox 组件ChoiceBox 组件
  • Badge 组件Badge 组件
  • Avatar 组件Avatar 组件
  • Login 组件Login 组件
  • Slider 组件Slider 组件
  • ProgressBar 组件ProgressBar 组件
  • Switch 组件Switch 组件
  • MaskedDateField 组件MaskedDateField 组件
  • GoogleCharts 组件GoogleCharts 组件
  • Navigator 组件Navigator 组件
  • Tree 组件Tree 组件
  • AppNav 组件AppNav 组件
  • CheckBox 组件CheckBox 组件
  • Upload 组件Upload 组件
  • Toast 组件Toast 组件
  • Icon 组件Icon 组件
  • Accordion 组件Accordion 组件
  • Alert 组件Alert 组件

按用途

选择一个分组,然后选择一个组件。每个磁贴都会打开文档中该组件的专属页面。

组合

您自己的组件, 基于我们的成果构建而成。

webforJ采用组合而非继承。你无需扩展 Button,而是编写一个扩展 Composite 的类,在其中组合组件,并决定应用的其他部分可以访问哪些方法。

SearchBar.java
public class SearchBar extends Composite<FlexLayout> {
private final FlexLayout self = getBoundComponent();
private TextField searchField;
private Button searchButton;

public SearchBar() {
searchField = new TextField("Search");
searchButton = new Button("Go");

self.setDirection(FlexDirection.ROW)
.add(searchField, searchButton);
}
}
  • 一个类,一个单元。

    Composite 封装单个已绑定组件并承载其内部结构,因此搜索栏、地址表单或整个仪表板卡片都可成为可复用的类。

  • API 由您选择。

    调用方只能看到您公开的方法,而继承会暴露所有内容。

  • 内置组件保持完整。

    内置组件是 final 的,可确保底层 Web Component 保持一致且可预测。你的行为逻辑应围绕它们构建,而不是嵌入其中。

集合之外

不在集合中? 在网页上使用任意组件。

业务组件是起点,而不是终点。每个 HTML 元素都是一个 Java 类,任何 Web 组件都可以成为 Java 类。

  • 29 个 HTML 元素

    页面本身(打字内容)

    webforJ 提供与标准 HTML 元素直接对应的组件,例如 Div、Paragraph、标题、列表、Img 和 Anchor,并配备类型化的 Java API。

    HTML 组件
  • Web components

    任意 Web 组件,轻松封装

    ElementComposite 封装自定义 HTML 元素或第三方 Web 组件,并通过 Java API 提供对其属性、特性和事件的访问。

    元素组合
  • npm 包

    来自 Java 的 npm registry

    前端打包器会将类上的注解转换为编译后的前端资源,因此组件可以包含其依赖的 npm 包。

    前端打包工具

你的设计系统

有自己的设计系统吗? 把它带上。

webforJ 组件是可选方案,并非必需。如果你的设计系统以 web components 形式提供,只需封装一次,就能用 Java 构建整个应用。

  1. 01

    包裹组件

    ElementComposite 将每个自定义元素转换为 Java 类,并通过 Java API 暴露其属性、特性和事件。

  2. 02

    将它们打包为一个模块

    前端打包器允许类声明所需的 npm 包,因此封装组件会自带其设计系统。应用只需添加依赖项。

  3. 03

    照常构建应用

    路由、安全性和数据绑定的工作方式相同。实现 ValueAware 的包装组件与任何内置字段一样绑定到您的模型。

您的页面将沿用公司现有的设计风格,底层框架仍是 webforJ。

在 Java 中使用

组件是一个对象 你使用 new 创建。

您可以通过类型化方法设置其状态,使用 lambda 监听其事件,并将其添加到容器中。界面由 Java 代码构建,无需维护同步的模板。

将组件添加到容器
FlexLayout container = new FlexLayout();

container.add(new Button("Click Me"));

TextField nameField = new TextField("Name");
TextField emailField = new TextField("Email");
Button submitButton = new Button("Submit");

container.add(nameField, emailField, submitButton);
通过事件更改状态
// Reveal an additional field when a checkbox is checked
TextField advancedField = new TextField("Advanced setting");
advancedField.setVisible(false);

CheckBox enableAdvanced = new CheckBox("Show advanced settings");
enableAdvanced.addValueChangeListener(e -> advancedField.setVisible(e.getValue()));

// Enable a button only when the required field has a value
Button submitButton = new Button("Submit");
submitButton.setEnabled(false);

TextField nameField = new TextField("Name");
nameField.addValueChangeListener(e -> submitButton.setEnabled(!e.getValue().isBlank()));

主题设置

一个设计系统 每个组件背后

webforJ 内置名为 DWC 的设计系统。其 CSS 变量(设计令牌)涵盖颜色、排版、边框和间距,所有组件都会读取这些变量。更改令牌后,所有使用它的组件都会随之更新。

浅色主题下的相同字段、按钮、开关、徽章和进度条。

light默认样式。浅色背景,带有淡淡的主色调。

深色主题下的相同字段、按钮、开关、徽章和进度条。

dark深色背景,点缀淡淡的主色调。

内置三种主题

light、dark 和 dark-pure(移除主色调,改用纯中性灰)。可通过 App.setTheme() 在运行时切换,无需重新构建。

跟随操作系统

注册浅色和深色主题,并传入 "system"。webforJ 会选择符合用户偏好的主题,并在偏好变化时自动切换。

@AppTheme("system")
@AppLightTheme("light")
@AppDarkTheme("dark")
class MyApp extends App {
// app code
}

用少量令牌重新塑造品牌

覆盖内置主题的种子令牌,让所有组件焕然一新。令牌不足时,可通过 Shadow Parts 深入组件内部。

:root {
--dwc-color-primary-seed: #6366f1;
--dwc-font-size: var(--dwc-font-size-l);
}

图库

文档中的组件画廊按相同的四个部分列出所有组件,并附有预览和简短描述。