ClickableList<T>
Étend ScrollableList avec surbrillance au survol (HOVER_FILL) et callback de sélection. Utiliser quand l'utilisateur doit cliquer sur une ligne.
package ca.tawess123.apocalyinterface.api.widget;
Builder
ClickableList<MonType> list = ClickableList.<MonType>builder()
.items(List<T> items) // liste d'éléments (requis)
.rowHeight(int height) // hauteur par ligne (défaut : 12 px)
.visibleRows(int rows) // lignes visibles (défaut : 6)
.rowRenderer(RowRenderer<T> r) // renderer (requis)
.onSelect(Consumer<T> callback) // action au clic
.visibleIf(boolean visible) // visibilité conditionnelle
.build();
Options du builder
| Option | Type | Défaut | Description |
|---|---|---|---|
.items(List<T>) | List<T> | — | Éléments à afficher. Requis. |
.rowHeight(int) | int | 12 | Hauteur fixe de chaque ligne en pixels. |
.visibleRows(int) | int | 6 | Nombre de lignes visibles. Détermine la hauteur totale. |
.rowRenderer(RowRenderer<T>) | RowRenderer<T> | — | Fonction de rendu par ligne. Requis. |
.onSelect(Consumer<T>) | Consumer<T> | null | Callback déclenché au clic gauche sur une ligne. Reçoit l'élément cliqué. |
.visibleIf(boolean) | boolean | true | Masque la liste si false (0 px). |
Comportement additionnel par rapport à ScrollableList
- Survol : fond
ApocalyColors.HOVER_FILL(blanc 20 % alpha) dessiné avant lerowRenderer. - Clic :
onSelect(item)déclenché au clic gauche.
Exemple — liste de joueurs cliquable
import ca.tawess123.apocalyinterface.api.widget.ClickableList;
import ca.tawess123.apocalyinterface.api.theme.ApocalyColors;
import net.minecraft.client.Minecraft;
var font = Minecraft.getInstance().font;
private String joueurSelectionne = "";
root.add(ClickableList.<String>builder()
.items(joueurs)
.visibleRows(6)
.rowHeight(14)
.rowRenderer((gfx, joueur, x, y, w, mx, my) -> {
gfx.drawString(font, joueur, x + 3, y + (14 - 9) / 2,
ApocalyColors.TEXT, false);
})
.onSelect(joueur -> {
joueurSelectionne = joueur;
init(); // ou update() si les données changent aussi
})
.build());
Exemple — boutique avec sélection
// items de boutique — l'item sélectionné est affiché dans un panneau détails
private String articleSelectionne = items.get(0);
root.add(ClickableList.<String>builder()
.items(items)
.visibleRows(6)
.rowHeight(14)
.rowRenderer((gfx, item, x, y, w, mx, my) -> {
gfx.drawString(font, item, x + 3, y + 3, ApocalyColors.TEXT, false);
})
.onSelect(item -> {
articleSelectionne = item;
init();
})
.build());
Notes
- La surbrillance est dessinée par
ClickableListavant lerowRenderer. Tu n'as pas à la gérer manuellement. - Pour détecter le survol dans le
rowRenderer(ex. changer la couleur du texte), comparemyavecyety + rowHeight.
Voir aussi
- Référence ScrollableList
- Recette : Liste de joueurs
- Recette : Multi-panneaux — ClickableList connectée à un panneau détails