précédent | suivant | table des matières
|
La classe JList permet d'afficher une liste d'objets, et offre à l'utilisateur la possibilité de sélectionner un ou plusieurs objets de la liste.
Un JList peut être créé à partir d'un tableau d'objets, ou à partir d'un Vector, mais si on veut une liste qui peut être mise à jour par programme, il faut utiliser un ListModel.
Les items de la liste peuvent être affichés (setLayoutOrientation) de trois façons différentes :
La sélection des items se fait suivant trois modes :
JList() |
Crée un JList vide. |
JList(Object [] donnees) |
Crée un JList qui affiche les données contenues dans le tableau donnees. |
JList(Vector<?> v) |
Crée un JList qui affiche les données contenues dans le vecteur v. |
JList (ListModel l) |
Crée un JList qui affche les données contenues dans le ListModel l. |
Méthodes
int getLayoutOrientation() |
Retourne le modes d'affichage des données. |
void setLayoutOrientation( int o) |
Affecte le mode d'affichage des données. |
int getSelectionMode() |
Retourne le mode de sélection des données. |
void setSelectionMode( int sm) |
Affecte le mode de sélection des données. |
void setVisibleRowCount( int l) |
Affecte le nombre de lignes visibles quand le mode d'affichage est HORIZONTAL_WRAP ou VERTICAL_WRAP. (Si l vaut -1, le nombre de lignes est calculé par le JList pour que le maximum de données soient visibles) |
void ensureIndexVisible(int index) |
Assure que l'item au rang index est visible. |
void clearSelection() |
Plus aucun item sélectionné. |
boolean isSelectionEmpty() |
Retourne true s'il n'y a aucun item sélectionné. |
int getLastVisibleIndex() |
Retourne l'indice du dernier item visible. |
int getSelectedIndex() |
Retourne l'indice de l'item sélectionné. |
int[] getSelectedIncices() |
Retourne les indices des items sélectionnés. |
void setSelectedIndex(int i) |
Affecte l'indice de l'item sélectionné. |
void setSelectedIndices(int [] i) |
Affecte les indices des items sélectionnés. |
Object getSelectedValue() |
Retourne la valeur de l'item sélectionné. |
void setSelectedValue(Object v, boolean b) |
L'item sélectionné devient v. Si b vaut true, il est rendu visible dans le JList. |
Object[] getSelectedValues() |
Retourne un tableau des items sélectionnés. |
ListModel getModel() |
Retourne le modèle de données affiché par le JList. |
void setModel(ListModel lm) |
Le nouveau modèle de données affiché par le JList est lm. |
ListCellRenderer getCellRenderer() |
Retourne l'objet qui gère le rendu des items. |
void setCellRenderer( ListCellRenderer lcr) |
Affecte l'objet qui gère le rendu des items. |
DefaultListModel
Pour pouvoir modifier la liste affichée par le JList, il faut utiliser un JList construit avec un modèle. La classe DefaultListModel offre une implantation permettant d'ajouter et d'enlever des items de la liste.
int getSize() |
Retourne le nombre d'éléments présents dans la liste. |
boolean isEmpty() |
Retourne getSize()==0 |
void clear() |
Enlève tous les éléments. |
void addElement(Object obj) |
Ajoute element en fin de liste. |
Object firstElement() |
Retourne le premier élément. Lève une exception NoSuchElementException si la liste est vide. |
Object lastElement() |
Retourne le dernier élément. Lève une exception NoSuchElementException si la liste est vide. |
Object get(int index) |
Retourne l'élément à l'indice index. Lève une exception IndexOutOfBoundsException si index est négatif ou plus grand que le nombre d'éléments de la liste. |
boolean contains(Object element) |
Retourne true si element est dans la liste et false sinon. |
int indexOf(Object element) |
|
int indexOf(Object element, int index) |
|
int lastIndexOf(Object element) |
|
int lastIndexOf(Object element, int index) |
|
Object remove(int index) |
Enlève l'item à l'indice index Lève une exception IndexOutOfBoundsException si index est négatif ou plus grand que le nombre d'éléments de la liste. |
boolean removeElement(Object element) |
Enlève la première occurrence de element de la liste, et retourne true. Retourne false si element n'est pas dans la liste. |
void removeRange(int depuis, int jusqua) |
Enlève de la liste tous les élément d'indices depuis (inclus) à jusqua (exclu). |
Object set(int index, Object element) |
Remplace l'élément d'indice index par element, et retourne l'ancienne valeur. Lève une exception IndexOutOfBoundsException si index est négatif ou plus grand que le nombre d'éléments de la liste. |
Exemple :
DefaultListModel dlm = new DefaultListModel(); JList liste = new JList(dlm); dlm.addElement("un"); dlm.addElement("deux");
ListCellRenderer
La seule méthode à définir est la méthode getListCellRendererComponent, qui définit le rendu de l'item.
exemple :public class Rendu extends JLabel implements ListCellRenderer { ImageIcon icon; ImageIcon selectIcon; Color selectCouleur = Color.RED; public Rendu(){ icon = new ImageIcon(getClass().getResource("img1.gif")); selectIcon = new ImageIcon(getClass().getResource("img2.gif")); } public Component getListCellRendererComponent(JList list, Object value, // valeur à afficher int index, // indice d'item boolean isSelected, // l'item est-il sélectionné boolean cellHasFocus) // La liste a-t-elle le focus { String s = value.toString(); if (isSelected) { setBackground(list.getSelectionBackground()); setForeground(selectCouleur); setText(s+" "+index); setIcon(selectIcon); }else{ setBackground(list.getBackground()); setForeground(list.getForeground()); setText(s); setIcon(icon); } setEnabled(list.isEnabled()); setFont(list.getFont()); setOpaque(true); return this; } } |