Passer au contenu principal

Composants d’interface utilisateur

Chaque partie d’un écran métier, Prêt en Java.

webforJ est le framework Java full-stack pour les applications web métier : créez toute l’application, écrans compris, en Java. Ses composants couvrent la mise en page, la saisie de données, les boîtes de dialogue, l’affichage des données et les notifications. Chacun est une classe Java que vous créez, configurez et ajoutez à une mise en page.

Composants de la galerie
57
Éléments HTML typés
29
Thèmes intégrés
3
Groupes par objectif
5
  • Composant AppLayoutComposant AppLayout
  • Composant ButtonComposant Button
  • Composant ChoiceBoxComposant ChoiceBox
  • Composant BadgeComposant Badge
  • Composant AvatarComposant Avatar
  • Composant LoginComposant Login
  • Composant SliderComposant Slider
  • Composant ProgressBarComposant ProgressBar
  • Composant SwitchComposant Switch
  • Composant MaskedDateFieldComposant MaskedDateField
  • Composant GoogleChartsComposant GoogleCharts
  • Composant NavigatorComposant Navigator
  • Composant TreeComposant Tree
  • Composant AppNavComposant AppNav
  • Composant CheckBoxComposant CheckBox
  • Composant UploadComposant Upload
  • Composant ToastComposant Toast
  • Composant IconComposant Icon
  • Composant AccordionComposant Accordion
  • Composant AlertComposant Alert

Par objectif

Choisissez un groupe, puis un composant. Chaque tuile ouvre la page de documentation dédiée à ce composant.

02

Formulaires et champs de saisie

Tout ce qu’un utilisateur saisit, sélectionne ou importe : texte, nombres, dates, masques, listes et fichiers.

20 composants

Composition

Vos propres composants, Construit à partir des nôtres.

webforJ privilégie la composition à l’héritage. Vous n’étendez pas Button. Vous écrivez une classe qui étend Composite, y combinez des composants et choisissez les méthodes accessibles au reste de votre application.

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);
}
}
  • Une classe, une unité.

    Un Composite encapsule un composant lié unique et contient votre structure interne, faisant d’une barre de recherche, d’un formulaire d’adresse ou d’une carte de tableau de bord entière une classe réutilisable.

  • Vous choisissez l’API.

    Les appelants ne voient que les méthodes que vous exposez, contrairement à l’héritage, où tout est exposé.

  • Les composants intégrés restent intacts.

    Les composants intégrés sont finaux, ce qui garantit la cohérence et la prévisibilité du composant web sous-jacent. Votre logique s’articule autour d’eux, sans les modifier.

Au-delà de l’ensemble

Pas dans l’ensemble ? Utilisez n’importe quel composant sur le Web.

Les composants métier sont un point de départ, pas une fin en soi. Chaque élément HTML est une classe Java, et n’importe quel composant web peut le devenir.

  • 29 éléments HTML

    La page elle-même, saisie

    webforJ fournit des composants qui correspondent directement aux éléments HTML standard, comme Div, Paragraph, les titres, les listes, Img et Anchor, avec une API Java typée.

    Composants HTML
  • Web components

    N’importe quel composant web, encapsulé

    ElementComposite encapsule un élément HTML personnalisé ou un composant web tiers et expose ses propriétés, attributs et événements via l’API Java.

    Élément composite
  • Packages npm

    Le registre npm, depuis Java

    Le bundler frontend transforme les annotations d’une classe en ressources frontend compilées, permettant ainsi à un composant d’intégrer le package npm dont il dépend.

    Frontend bundler

Votre système de design

Vous avez votre propre système de design ? Emportez-le avec vous.

Les composants webforJ sont une possibilité, pas une obligation. Si votre système de design est fourni sous forme de web components, vous l’encapsulez une fois et construisez toute l’application avec, en Java.

  1. 01

    Encapsuler les composants

    ElementComposite transforme chaque élément personnalisé en classe Java et expose ses propriétés, attributs et événements via l’API Java.

  2. 02

    Regroupez-les en un seul module

    Le bundler frontend permet à une classe de déclarer les packages npm dont elle a besoin, afin que les wrappers embarquent leur système de design. Une application n’a qu’à ajouter la dépendance.

  3. 03

    Compilez l’application comme d’habitude.

    Le routage, la sécurité et la liaison de données fonctionnent de la même manière. Un composant encapsulé qui implémente ValueAware se lie à votre modèle comme n’importe quel champ intégré.

Vos écrans conservent l’apparence déjà conçue par votre entreprise. Le framework sous-jacent reste webforJ.

Utilisé depuis Java

Un composant est un objet vous créez avec new.

Vous définissez son état à l’aide de méthodes typées, écoutez ses événements avec des lambdas et l’ajoutez à un conteneur. L’écran est écrit en code Java, sans modèle à synchroniser.

Ajouter des composants à un conteneur
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);
Modifier l’état à partir des événements
// 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()));

Thématisation

Un système de design derrière chaque composant.

webforJ est fourni avec un système de conception nommé DWC. Ses variables CSS, les design tokens, couvrent les couleurs, la typographie, les bordures et l’espacement, et tous les composants les utilisent. Modifiez un token, et tous les composants qui l’utilisent s’adaptent.

Le même champ, les mêmes boutons, le même interrupteur, le même badge et la même barre de progression dans le thème clair.

lightPar défaut. Fond clair, légère teinte de la couleur principale.

Le même champ, les mêmes boutons, le même interrupteur, le même badge et la même barre de progression en thème sombre.

darkFond sombre, légère teinte de la couleur principale.

Trois thèmes intégrés

light, dark et dark-pure, qui supprime la teinte principale au profit de gris neutres purs. Changez de thème à l’exécution avec App.setTheme(), sans recompilation.

Suit le système d’exploitation

Enregistrez un thème clair et un thème sombre, puis transmettez "system". webforJ choisit celui qui correspond aux préférences de l’utilisateur et bascule lorsque celles-ci changent.

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

Renouvelez votre image de marque en quelques jetons

Remplacez les jetons de base des thèmes intégrés : tous les composants adoptent alors le nouveau style. Les Shadow Parts permettent d’intervenir à l’intérieur d’un composant lorsqu’un jeton ne suffit pas.

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

La galerie

La galerie de la documentation répertorie chaque composant avec un aperçu et une brève description, répartis dans les quatre mêmes sections que dans la documentation.