MaListeElements 1 sur 12 file:///D:/a/heg/util/MaListeElements.html Overview Package Prev Class Class Next Class Tree Deprecated Index Help Frames Summary: Nested | Field | Constr | Method No Frames All Classes Detail: Field | Constr | Method heg.util Class MaListeElements<E> java.lang.Object java.awt.Component java.awt.List heg.util.MaListeElements<E> Type Parameters: E- All Implemented Interfaces: java.awt.image.ImageObserver, java.awt.ItemSelectable, java.awt.MenuContainer, java.io.Serializable, javax.accessibility.Accessible public class MaListeElements<E> extends java.awt.List Implémentation de la classe MaListeElements Objectifs : 1. 2. 3. 4. 5. 6. Construction d'un composant graphique par dérivation; Démonstration de la notion de réutilisation par héritage; Démonstration de la notion de spécialisation par redéfinition, ajout et suppression de méthodes; Utilisation de la généricité et rendre générique un classe ne l'étant pas à l'origine; Gestion d'une liste de références sur des objets; Intégration d'un composant dans un IDE. La classe de base du composant est java.awt.List qui présente une liste sur l'interface graphique. Cette liste est composée de textes (Strings) sélectionnables et gère un ensemble d'événements. Cette classe possède naturellement des propriétés et des méthodes. Il faudra utiliser celles qui nous intéressent, modifier celles qui ne sont pas adaptées et supprimer celles qui deviennent inutiles (voir sensibles). Dans cette version, on pose que ce sont les clients qui sont responsables de la validité des données. Principe de base 1. 2. 3. 4. Dériver MaListeElements de java.awt.List; Rendre générique la classe : MaListeElements< E >; Intégrer une structure de données pour la gestion des références sur les objets de classe E; Ajuster les constructeurs, les attributs et les méthodes répondant au cahier des charges. Les constructeurs de la classe parente (java.awt.List) conviennent parfaitement et nous les utiliserons donc. 1. MaListeElements () : création d'une nouvelle liste vide (4 lignes vides par défaut) et sélection unique; 2. MaListeElements (int) : création d'une nouvelle liste vide avec n lignes visibles et sélection unique; 3. MaListeElements (int, boolean) : création d'une nouvelle liste vide avec n lignes visibles et sélection unique ou multiple. Les méthodes : 1. Inhibition : car le parent gère uniquement le type classe String et nous voulons rendre générique MaListeElements 1. void add (String) 2. void add (String, int) 3. String getItem (int) 4. String[] getItem () 5. String getSelectedItem () 6. String[] getSelectedItems () 7. void remove (String) 11.05.2013 13:46 MaListeElements 2 sur 12 file:///D:/a/heg/util/MaListeElements.html 8. void replaceItem (String, int) 2. Surcharge : permet de rendre générique tout en conservant les noms des méthodes (Surcharge : lors d'un héritage, même nom mais signatures différentes) 1. void add (E) 2. void add (E, int) 3. void remove (E) 3. Redéfinition : pour adapter le comportement (Redéfinition : lors d'un héritage, même nom et mêmes signatures) 1. Object[] getSelectedObjects() 2. void remove(int) 3. void removeAll() 4. Nouvelles ou remplacent : permet d'ajouter de nouvelles fonctionnalités (Peuvent remplacer fonctionnellement d'autres méthodes inhibées) 1. E getElem (int) 2. E[] getElem () 3. E getSelectedElem () 4. E[] getSelectedElem () 5. void replaceElem (E, int) Remarque : Dans le cadre de classes générique, il y a des "type guard" qu'il n'est pas possible de vérifier (car le type générique n'est justement pas encore connu et pas dans le byte code). La vérification de pourra se faire qu'a l'exécution. Un warning est généré à la compilation. Pour supprimer le message de warning, il faut faire précéder la définition de la méthode par : @SuppressWarnings("unchecked") Pour la préparation du jar : jar cf MaListeElements.jar MaListeElements.class See Also: Serialized Form Nested Class Summary Nested classes/interfaces inherited from class java.awt.List java.awt.List.AccessibleAWTList Nested classes/interfaces inherited from class java.awt.Component java.awt.Component.AccessibleAWTComponent, java.awt.Component.BaselineResizeBehavior, java.awt.Component.BltBufferStrategy, java.awt.Component.FlipBufferStrategy Field Summary Fields Modifier and Type Field and Description protected java.util.ArrayList<E> el Vecteur mémorisant les références sur les éléments de la liste (qui sont des objets) Le type de ces éléments DOIT être E 11.05.2013 13:46 MaListeElements 3 sur 12 file:///D:/a/heg/util/MaListeElements.html Fields inherited from class java.awt.Component BOTTOM_ALIGNMENT, CENTER_ALIGNMENT, LEFT_ALIGNMENT, RIGHT_ALIGNMENT, TOP_ALIGNMENT Fields inherited from interface java.awt.image.ImageObserver ABORT, ALLBITS, ERROR, FRAMEBITS, HEIGHT, PROPERTIES, SOMEBITS, WIDTH Constructor Summary Constructors Constructor and Description MaListeElements() Constructeur : création d'une nouvelle liste vide (4 lignes vides par défaut) et possibilité de sélection unique dans le composant liste graphique Utilisation du constructeur correspondant du parent (java.awt.List) MaListeElements(int rows) Constructeur : création d'une nouvelle liste vide avec n lignes visibles (taille du composant) et possibilité de sélection unique dans le composant liste graphique Utilisation du constructeur correspondant du parent (java.awt.List) MaListeElements(int rows, boolean multipleMode) Constructeur : création d'une nouvelle liste vide avec n lignes visibles (taille du composant) et sélection unique ou multiple dans le composant liste graphique Sélection multiple true : sélection multiple false: sélection unique Method Summary Methods Modifier and Type Method and Description void add(E e) Ajoute un élément (e de classe E) à la fin de la liste. Deux structures sont impactées : La liste locale (el) qui mémorise les références sur les objets La structure de java.awt.List qui mémorise les chaînes de caractères affichées sur le GUI Afin qu'il puisse être possible de renseigner le parent (java.awt.List) toutes les classes des objets placés dans MaListeElements doivent redéfinir toString() qui composera la chaîne de caractères présentée à l'utilisateur dans le composant graphique. Surcharge :add(String) void add(E e, int index) Ajoute un élément (e de classe E) à la position index. void add(java.lang.String item) Deprecated. void add(java.lang.String item, int index) Deprecated. E getElem(int index) Retourne une référence de type E le l'élément spécifié par son index. Une seule structures est impactée : La liste locale (el) qui mémorise les références sur les objets de classe E 11.05.2013 13:46 MaListeElements 4 sur 12 file:///D:/a/heg/util/MaListeElements.html Remplace :getItem(int) E[] getElems() Retourne un tableau de références sur les objets de type E de l'ArrayList el. Le compilateur ne pourra pas vérifier le type des éléments du tableau. Remarquer l'utilisation de "@SuppressWarnings("unchecked")" pour indiquer u compilateur que l'on sait exactement ce que l'on fait et que l'on a pas besoin d'avertissement. Une seule structures est impactée : La liste locale (el) qui mémorise les références sur les objets de classe E Remplace :getItems() java.lang.String getItem(int index) Deprecated. java.lang.String[] getItems() Deprecated. E getSelectedElem() Retourne la référence de l'objet de type E correspondant à la ligne sélectionnée sur le composant. Deux structures sont impactées : La liste locale (el) qui mémorise les références sur les objets de la liste La structure de java.awt.List qui mémorise les chaînes de caractères affichées sur le GUI Principe : récupérer l'index de l'élément sélectionné dans le GUI et rechercher la référence de l'objet de type E correspondante E[] getSelectedElems() Retourne une collection de références de type E sur les éléments sélectionnés. java.lang.String getSelectedItem() Retourne le texte généré par le toString de l'objet de type E correspondant à la ligne sélectionnée sur le composant. Deux structures sont impactées : La liste locale (el) qui mémorise les références sur les objets de la liste La structure de java.awt.List qui mémorise les chaînes de caractères affichées sur le GUI Principe : récupérer l'index de l'élément sélectionné dans le GUI et rechercher la référence de l'objet de type E correspondante Remplace :getSelectedItem() Remplace :getSelectedItem() java.lang.String[] getSelectedItems() Deprecated. java.lang.Object[] getSelectedObjects() //........................................ void remove(E elem) Supprime la premiètre occurence de l'élément passé en paramètre de la liste. Deux structures sont impactées : La liste locale (el) qui mémorise le texte présenté dans l'interface GUI La structure de java.awt.List qui mémorise la référence sur l'objet correspondant Afin qu'il puisse être possible de renseigner le parent (java.awt.List) toutes les classes des objets placés dans MaListeElements doivent redéfinir toString() qui composera la chaîne de caractères présentée. Sucharge :remove(String) void remove(int index) Supprime un élément à la position indiquée par index. Deux structures sont impactées : La liste locale (el) qui mémorise les références sur les objets de la liste La structure de java.awt.List qui mémorise les chaînes de caractères affichées sur le GUI Le principe est de supprimer l'élément dans les deux structures. Redéfini :remove(int) void remove(java.lang.String item) Deprecated. 11.05.2013 13:46 MaListeElements 5 sur 12 void file:///D:/a/heg/util/MaListeElements.html removeAll() Supprime tous les éléments de la liste. Deux structures sont impactées : La liste locale (el) qui mémorise les références sur les objets de la liste La structure de java.awt.List qui mémorise les chaînes de caractères affichées sur le GUI Le principe est de supprimer les éléments dans les deux structures. Redéfini :removeAll() void replaceElem(E e, int index) Remplace l'élément désigné par la position index par l'élément passé en référence. Deux structures sont impactées : La liste locale (el) qui mémorise les références sur les objets de la liste La structure de java.awt.List qui mémorise les chaînes de caractères affichées sur le GUI Principe : remplacer dans les deux structures Remplace :replaceElem() void replaceItem(java.lang.String item, int index) Deprecated. Methods inherited from class java.awt.List addActionListener, addItem, addItem, addItemListener, addNotify, allowsMultipleSelections, clear, countItems, delItem, delItems, deselect, getAccessibleContext, getActionListeners, getItemCount, getItemListeners, getListeners, getMinimumSize, getMinimumSize, getPreferredSize, getPreferredSize, getRows, getSelectedIndex, getSelectedIndexes, getVisibleIndex, isIndexSelected, isMultipleMode, isSelected, makeVisible, minimumSize, minimumSize, paramString, preferredSize, preferredSize, processActionEvent, processEvent, processItemEvent, removeActionListener, removeItemListener, removeNotify, select, setMultipleMode, setMultipleSelections Methods inherited from class java.awt.Component action, add, addComponentListener, addFocusListener, addHierarchyBoundsListener, addHierarchyListener, addInputMethodListener, addKeyListener, addMouseListener, addMouseMotionListener, addMouseWheelListener, addPropertyChangeListener, addPropertyChangeListener, applyComponentOrientation, areFocusTraversalKeysSet, bounds, checkImage, checkImage, coalesceEvents, contains, contains, createImage, createImage, createVolatileImage, createVolatileImage, deliverEvent, disable, disableEvents, dispatchEvent, doLayout, enable, enable, enableEvents, enableInputMethods, firePropertyChange, firePropertyChange, firePropertyChange, firePropertyChange, firePropertyChange, firePropertyChange, firePropertyChange, firePropertyChange, firePropertyChange, getAlignmentX, getAlignmentY, getBackground, getBaseline, getBaselineResizeBehavior, getBounds, getBounds, getColorModel, getComponentAt, getComponentAt, getComponentListeners, getComponentOrientation, getCursor, getDropTarget, getFocusCycleRootAncestor, getFocusListeners, getFocusTraversalKeys, getFocusTraversalKeysEnabled, getFont, getFontMetrics, getForeground, getGraphics, getGraphicsConfiguration, getHeight, getHierarchyBoundsListeners, getHierarchyListeners, getIgnoreRepaint, getInputContext, getInputMethodListeners, getInputMethodRequests, getKeyListeners, getLocale, getLocation, getLocation, getLocationOnScreen, getMaximumSize, getMouseListeners, getMouseMotionListeners, getMousePosition, getMouseWheelListeners, getName, getParent, getPeer, getPropertyChangeListeners, getPropertyChangeListeners, getSize, getSize, getToolkit, getTreeLock, getWidth, getX, getY, gotFocus, handleEvent, hasFocus, hide, imageUpdate, inside, invalidate, isBackgroundSet, isCursorSet, isDisplayable, isDoubleBuffered, isEnabled, isFocusable, isFocusCycleRoot, isFocusOwner, isFocusTraversable, isFontSet, isForegroundSet, isLightweight, isMaximumSizeSet, isMinimumSizeSet, isOpaque, isPreferredSizeSet, isShowing, isValid, isVisible, keyDown, keyUp, layout, list, list, list, list, list, locate, location, lostFocus, mouseDown, mouseDrag, mouseEnter, mouseExit, mouseMove, mouseUp, move, nextFocus, paint, paintAll, postEvent, prepareImage, prepareImage, print, printAll, processComponentEvent, processFocusEvent, processHierarchyBoundsEvent, processHierarchyEvent, processInputMethodEvent, processKeyEvent, processMouseEvent, processMouseMotionEvent, processMouseWheelEvent, remove, removeComponentListener, removeFocusListener, removeHierarchyBoundsListener, removeHierarchyListener, removeInputMethodListener, removeKeyListener, removeMouseListener, removeMouseMotionListener, removeMouseWheelListener, removePropertyChangeListener, removePropertyChangeListener, repaint, repaint, repaint, repaint, requestFocus, 11.05.2013 13:46 MaListeElements 6 sur 12 file:///D:/a/heg/util/MaListeElements.html requestFocus, requestFocusInWindow, requestFocusInWindow, reshape, resize, resize, revalidate, setBackground, setBounds, setBounds, setComponentOrientation, setCursor, setDropTarget, setEnabled, setFocusable, setFocusTraversalKeys, setFocusTraversalKeysEnabled, setFont, setForeground, setIgnoreRepaint, setLocale, setLocation, setLocation, setMaximumSize, setMinimumSize, setName, setPreferredSize, setSize, setSize, setVisible, show, show, size, toString, transferFocus, transferFocusBackward, transferFocusUpCycle, update, validate Methods inherited from class java.lang.Object clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait Field Detail el protected java.util.ArrayList<E> el Vecteur mémorisant les références sur les éléments de la liste (qui sont des objets) Le type de ces éléments DOIT être E Constructor Detail MaListeElements public MaListeElements() Constructeur : création d'une nouvelle liste vide (4 lignes vides par défaut) et possibilité de sélection unique dans le composant liste graphique Utilisation du constructeur correspondant du parent (java.awt.List) MaListeElements public MaListeElements(int rows) Constructeur : création d'une nouvelle liste vide avec n lignes visibles (taille du composant) et possibilité de sélection unique dans le composant liste graphique Utilisation du constructeur correspondant du parent (java.awt.List) Parameters: rows - nombre de lignes visibles MaListeElements public MaListeElements(int rows, boolean multipleMode) Constructeur : création d'une nouvelle liste vide avec n lignes visibles (taille du composant) et sélection unique ou multiple dans le composant liste graphique Sélection multiple 1. true : sélection multiple 2. false: sélection unique 11.05.2013 13:46 MaListeElements 7 sur 12 file:///D:/a/heg/util/MaListeElements.html Parameters: rows - nombre de lignes visibles multipleMode - sélection multiple Method Detail add @Deprecated public void add(java.lang.String item) Deprecated. obsolete! : remplacé par add(E). Overrides: add in class java.awt.List add @Deprecated public void add(java.lang.String item, int index) Deprecated. obsolete! : remplacé par add(E, int). Overrides: add in class java.awt.List getItem @Deprecated public java.lang.String getItem(int index) Deprecated. obsolete! : remplacé par getElem(). Overrides: getItem in class java.awt.List getItems @Deprecated public java.lang.String[] getItems() Deprecated. obsolete! : remplacé par getElems(). Overrides: getItems in class java.awt.List 11.05.2013 13:46 MaListeElements 8 sur 12 file:///D:/a/heg/util/MaListeElements.html getSelectedItems @Deprecated public java.lang.String[] getSelectedItems() Deprecated. obsolete! : remplacé par getSelectedElems(). Overrides: getSelectedItems in class java.awt.List remove @Deprecated public void remove(java.lang.String item) Deprecated. obsolete! : remplacé par remove(E). Overrides: remove in class java.awt.List replaceItem @Deprecated public void replaceItem(java.lang.String item, int index) Deprecated. obsolete! : remplacé par replaceElem(E, int). Overrides: replaceItem in class java.awt.List Parameters: item - add public void add(E e) Ajoute un élément (e de classe E) à la fin de la liste. Deux structures sont impactées : 1. La liste locale (el) qui mémorise les références sur les objets 2. La structure de java.awt.List qui mémorise les chaînes de caractères affichées sur le GUI Afin qu'il puisse être possible de renseigner le parent (java.awt.List) toutes les classes des objets placés dans MaListeElements doivent redéfinir toString() qui composera la chaîne de caractères présentée à l'utilisateur dans le composant graphique. Surcharge :add(String) Parameters: e - référence de l'objet à ajouter qui doit être de classe E qui doit être de classe E add 11.05.2013 13:46 MaListeElements 9 sur 12 file:///D:/a/heg/util/MaListeElements.html public void add(E e, int index) Ajoute un élément (e de classe E) à la position index. Parameters: e - référence de l'objet à ajouter qui doit être de classe E index - position d'insertion dans la liste (0-basé). Insérer à la fin si l'index est supérieur au nombre d'éléments. See Also: (E e) Sucharge :add(String, int) remove public void remove(E elem) Supprime la premiètre occurence de l'élément passé en paramètre de la liste. Deux structures sont impactées : 1. La liste locale (el) qui mémorise le texte présenté dans l'interface GUI 2. La structure de java.awt.List qui mémorise la référence sur l'objet correspondant Afin qu'il puisse être possible de renseigner le parent (java.awt.List) toutes les classes des objets placés dans MaListeElements doivent redéfinir toString() qui composera la chaîne de caractères présentée. Sucharge :remove(String) Parameters: elem - getSelectedObjects public java.lang.Object[] getSelectedObjects() //........................................ // Redéfinitions //........................................ /** Récupère les références sur les sélections faites par l'utilisateur dans l'interface GUI. La recherche des références doit se faire dans les deux listes : 1. La structure de java.awt.List qui retourne en temps normal un tableau de référence sur les Objets sélectionnés dans l'interface GUI 2. La liste locale (el) devra rechercher les correspondances pour retourner au client un autre tableau de références sur sa structure locale Le principe est de rechercher les index dans le parent et de composer le tableau résultat avec les références correspondant aux index dans la structure locale (el). Redéfini :getSelectedObjects () Specified by: getSelectedObjects in interface java.awt.ItemSelectable Overrides: getSelectedObjects in class java.awt.List remove public void remove(int index) Supprime un élément à la position indiquée par index. 11.05.2013 13:46 MaListeElements 10 sur 12 file:///D:/a/heg/util/MaListeElements.html Deux structures sont impactées : 1. La liste locale (el) qui mémorise les références sur les objets de la liste 2. La structure de java.awt.List qui mémorise les chaînes de caractères affichées sur le GUI Le principe est de supprimer l'élément dans les deux structures. Redéfini :remove(int) Overrides: remove in class java.awt.List Parameters: index - position de l'élément à supprimer (0-basé). removeAll public void removeAll() Supprime tous les éléments de la liste. Deux structures sont impactées : 1. La liste locale (el) qui mémorise les références sur les objets de la liste 2. La structure de java.awt.List qui mémorise les chaînes de caractères affichées sur le GUI Le principe est de supprimer les éléments dans les deux structures. Redéfini :removeAll() Overrides: removeAll in class java.awt.List getElem public E getElem(int index) Retourne une référence de type E le l'élément spécifié par son index. Une seule structures est impactée : 1. La liste locale (el) qui mémorise les références sur les objets de classe E Remplace :getItem(int) Parameters: index - position de l'objet (0-basé) Returns: E getElems public E[] getElems() Retourne un tableau de références sur les objets de type E de l'ArrayList el. Le compilateur ne pourra pas vérifier le type des éléments du tableau. Remarquer l'utilisation de "@SuppressWarnings("unchecked")" pour indiquer u compilateur que l'on sait exactement ce que l'on fait et que l'on a pas besoin d'avertissement. Une seule structures est impactée : 1. La liste locale (el) qui mémorise les références sur les objets de classe E Remplace :getItems() 11.05.2013 13:46 MaListeElements 11 sur 12 file:///D:/a/heg/util/MaListeElements.html Returns: E[] getSelectedItem public java.lang.String getSelectedItem() Retourne le texte généré par le toString de l'objet de type E correspondant à la ligne sélectionnée sur le composant. Deux structures sont impactées : 1. La liste locale (el) qui mémorise les références sur les objets de la liste 2. La structure de java.awt.List qui mémorise les chaînes de caractères affichées sur le GUI Principe : récupérer l'index de l'élément sélectionné dans le GUI et rechercher la référence de l'objet de type E correspondante Remplace :getSelectedItem() Overrides: getSelectedItem in class java.awt.List getSelectedElem public E getSelectedElem() Retourne la référence de l'objet de type E correspondant à la ligne sélectionnée sur le composant. Deux structures sont impactées : 1. La liste locale (el) qui mémorise les références sur les objets de la liste 2. La structure de java.awt.List qui mémorise les chaînes de caractères affichées sur le GUI Principe : récupérer l'index de l'élément sélectionné dans le GUI et rechercher la référence de l'objet de type E correspondante Remplace :getSelectedItem() Returns: E getSelectedElems public E[] getSelectedElems() Retourne une collection de références de type E sur les éléments sélectionnés. Le compilateur ne pourra pas vérifier le type des éléments du tableau. Remarquer l'utilisation de "@SuppressWarnings("unchecked")" pour indiquer au compilateur que l'on sait exactement ce que l'on fait et que l'on a pas besoin d'avertissement. Deux structures sont impactées : 1. La liste locale (el) qui mémorise les références sur les objets de la liste 2. La structure de java.awt.List qui mémorise les chaînes de caractères affichées sur le GUI Principe : récupérer les index des éléments sélectionnés dans le GUI et rechercher les références des objets de type E correspondantes Remplace :getSelectedElems() Returns: E[] 11.05.2013 13:46 MaListeElements 12 sur 12 file:///D:/a/heg/util/MaListeElements.html replaceElem public void replaceElem(E e, int index) Remplace l'élément désigné par la position index par l'élément passé en référence. Deux structures sont impactées : 1. La liste locale (el) qui mémorise les références sur les objets de la liste 2. La structure de java.awt.List qui mémorise les chaînes de caractères affichées sur le GUI Principe : remplacer dans les deux structures Remplace :replaceElem() Parameters: e - référence de l'élément à remplacer de classe E index - position de l'élément à supprimer (0-basé). Overview Package Prev Class Class Next Class Tree Deprecated Index Help Frames Summary: Nested | Field | Constr | Method No Frames All Classes Detail: Field | Constr | Method 11.05.2013 13:46