Maison  >  Article  >  Java  >  Comment personnaliser l'affichage des cellules ListView avec les usines de cellules dans JavaFX ?

Comment personnaliser l'affichage des cellules ListView avec les usines de cellules dans JavaFX ?

DDD
DDDoriginal
2024-10-25 02:24:30735parcourir

How to Customize ListView Cell Display with Cell Factories in JavaFX?

Amélioration de l'affichage ListView avec des objets personnalisés dans JavaFX

Lors du remplissage d'un ListView avec des objets personnalisés, il est essentiel de contrôler la façon dont ces objets sont affichés. Bien que le simple fait de transmettre la liste observable d'objets personnalisés à ListView fonctionne, cela peut ne pas aboutir à la présentation souhaitée.

Pour obtenir l'affichage souhaité, envisagez de tirer parti des usines de cellules. Cette approche vous permet de personnaliser la façon dont chaque cellule de ListView est présentée.

Utilisation de Cell Factory pour un affichage personnalisé

Remplacez la ligne ListView initiale par ce qui suit :

<code class="java">ListView<Word> listViewOfWords = new ListView<>();
listViewOfWords.setCellFactory(param -> new ListCell<Word>() {
    // Update the cell based on the provided item
    @Override
    protected void updateItem(Word item, boolean empty) {
        // Handle empty or null values for clean presentation
        if (empty || item == null || item.getWord() == null) {
            setText(null);
        } else {
            // Display the word string
            setText(item.getWord());
        }
    }
});</code>

Cette fabrique de cellules accède à la méthode getWord() de chaque objet Word pour remplir la cellule correspondante avec la chaîne de mots.

Optimiser le contenu de la cellule

Lorsque l'utilisation de toString() pour définir le contenu de la cellule peut suffit, une usine de cellules dédiée offre une plus grande flexibilité. Vous pouvez incorporer des nœuds graphiques au-delà du texte pour améliorer la représentation visuelle de la cellule.

Personnalisation supplémentaire

Considérez les optimisations suivantes :

  • Évitez de remplacer toString :
    Au lieu de compter sur toString pour la présentation, utilisez une fabrique de cellules pour gérer la représentation visuelle dans ListView. Cela permet une meilleure séparation des préoccupations.
  • Mises à jour de champs dynamiques :
    Si vous avez besoin de mises à jour de champs dynamiques pour les objets, implémentez un mécanisme d'écoute de modifications fiable pour garantir que ListView reflète les modifications. apportées aux propriétés des objets sous-jacents.
  • Utilisation des enregistrements et des observables :
    Envisagez d'utiliser des enregistrements Java (pour les objets immuables) ou des observables (pour les mises à jour de champs dynamiques) pour appliquer l'encapsulation et les données. intégrité.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn