Saltar al contenido principal

Componentes de interfaz de usuario

Cada parte de una pantalla empresarial, Listo en Java.

webforJ es el framework Java full-stack para aplicaciones web empresariales: creas toda la aplicación, incluidas las pantallas, en Java. Sus componentes abarcan diseño, entrada de datos, diálogos, visualización de datos y notificaciones; cada uno es una clase Java que creas, configuras y añades a un diseño.

Componentes de la galería
57
Elementos HTML tipados
29
Temas integrados
3
Grupos por propósito
5
  • componente AppLayoutcomponente AppLayout
  • componente Buttoncomponente Button
  • componente ChoiceBoxcomponente ChoiceBox
  • componente Badgecomponente Badge
  • componente Avatarcomponente Avatar
  • componente Logincomponente Login
  • componente Slidercomponente Slider
  • componente ProgressBarcomponente ProgressBar
  • componente Switchcomponente Switch
  • componente MaskedDateFieldcomponente MaskedDateField
  • componente GoogleChartscomponente GoogleCharts
  • componente Navigatorcomponente Navigator
  • componente Treecomponente Tree
  • componente AppNavcomponente AppNav
  • componente CheckBoxcomponente CheckBox
  • componente Uploadcomponente Upload
  • componente Toastcomponente Toast
  • componente Iconcomponente Icon
  • componente Accordioncomponente Accordion
  • componente Alertcomponente Alert

Por finalidad

Elige un grupo y luego un componente. Cada tarjeta abre su propia página en la documentación.

02

Formularios y campos

Todo lo que un usuario escribe, selecciona o carga, desde texto y números hasta fechas, máscaras, listas y archivos.

20 componentes

Composición

Tus propios componentes, Creado a partir del nuestro.

webforJ usa composición en lugar de herencia. No extiendes un Button. Escribes una clase que extiende Composite, combinas componentes dentro de ella y decides qué métodos puede ver el resto de tu aplicación.

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);
}
}
  • Una clase, una unidad.

    Un Composite envuelve un único componente enlazado y contiene su estructura interna, de modo que una barra de búsqueda, un formulario de dirección o una tarjeta completa del panel se convierten en una sola clase reutilizable.

  • Tú eliges la API.

    Quienes invocan solo ven los métodos que expones, a diferencia de la herencia, donde todo queda expuesto.

  • Los componentes integrados permanecen intactos.

    Los componentes integrados son finales, lo que mantiene coherente y predecible el componente web subyacente. Tu lógica se construye alrededor de ellos, no dentro de ellos.

Más allá del conjunto

¿No está en el conjunto? Usa cualquier componente de la web.

Los componentes de negocio son el punto de partida, no el destino. Cada elemento HTML es una clase Java, y cualquier componente web puede convertirse en una.

  • 29 elementos HTML

    La página en sí, escrita

    webforJ ofrece componentes que se corresponden directamente con elementos HTML estándar, como Div, Paragraph, los encabezados, las listas, Img y Anchor, con una API de Java tipada.

    Componentes HTML
  • Web components

    Cualquier componente web, envuelto

    ElementComposite encapsula un elemento HTML personalizado o un componente web de terceros y expone sus propiedades, atributos y eventos a través de la API de Java.

    Elemento compuesto
  • paquetes de npm

    El registro de npm, desde Java

    El empaquetador del frontend convierte las anotaciones de una clase en recursos compilados del frontend, para que un componente pueda incluir el paquete npm del que depende.

    Empaquetador de frontend

Tu sistema de diseño

¿Tienes tu propio sistema de diseño? Llévalo contigo.

Los componentes de webforJ son una opción, no un requisito. Si tu sistema de diseño se distribuye como componentes web, lo encapsulas una sola vez y creas toda la aplicación con él, en Java.

  1. 01

    Envolver los componentes

    ElementComposite convierte cada elemento personalizado en una clase Java y expone sus propiedades, atributos y eventos a través de la API de Java.

  2. 02

    Distribúyelos como un solo módulo.

    El empaquetador del frontend permite que una clase declare los paquetes npm que necesita, para que los wrappers incluyan su sistema de diseño. La aplicación solo tiene que añadir la dependencia.

  3. 03

    Compila la aplicación como de costumbre.

    El enrutamiento, la seguridad y el enlace de datos funcionan igual. Un componente envuelto que implementa ValueAware se enlaza con tu modelo como cualquier campo integrado.

Tus pantallas mantienen el diseño que tu empresa ya creó. El framework subyacente sigue siendo webforJ.

Usado desde Java

Un componente es un objeto creas con new.

Configuras su estado mediante métodos tipados, escuchas sus eventos con lambdas y lo añades a un contenedor. La pantalla es código Java, sin ninguna plantilla que mantener sincronizada.

Añadir componentes a un contenedor
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);
Cambiar estado desde eventos
// 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()));

Tematización

Un único sistema de diseño detrás de cada componente.

webforJ incluye un sistema de diseño llamado DWC. Sus variables CSS, los tokens de diseño, abarcan colores, tipografía, bordes y espaciado, y todos los componentes las utilizan. Cambia un token y todos los componentes que lo usan reflejan el cambio.

El mismo campo, los botones, el interruptor, la insignia y la barra de progreso en el tema claro.

lightPredeterminado. Fondo claro con un sutil matiz del color primario.

El mismo campo, los botones, el interruptor, la insignia y la barra de progreso en el tema oscuro.

darkFondo oscuro con un sutil matiz del color primario.

Tres temas integrados

light, dark y dark-pure, que elimina el tinte principal para usar grises neutros puros. Cambia en tiempo de ejecución con App.setTheme(), sin recompilar.

Según el sistema operativo

Registra un tema claro y otro oscuro, y pasa "system". webforJ seleccionará el que coincida con las preferencias del usuario y cambiará de nuevo cuando estas cambien.

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

Renueva tu marca con unos pocos tokens.

Sobrescribe los tokens semilla de los temas integrados y todos los componentes adoptan el nuevo aspecto. Las shadow parts permiten acceder al interior de un componente cuando un token no basta.

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

La galería

La galería de la documentación enumera cada componente con su vista previa y una breve descripción, en las mismas cuatro secciones que utiliza la documentación.