< prev index next >

src/java.desktop/share/classes/javax/swing/JList.java

Print this page

        

*** 2357,2386 **** } /** * Selects the specified object from the list. * * @param anObject the object to select * @param shouldScroll {@code true} if the list should scroll to display * the selected object, if one exists; otherwise {@code false} */ public void setSelectedValue(Object anObject,boolean shouldScroll) { ! if(anObject == null) ! setSelectedIndex(-1); ! else if(!anObject.equals(getSelectedValue())) { int i,c; ListModel<E> dm = getModel(); ! for(i=0,c=dm.getSize();i<c;i++) ! if(anObject.equals(dm.getElementAt(i))){ setSelectedIndex(i); ! if(shouldScroll) ensureIndexIsVisible(i); repaint(); /** FIX-ME setSelectedIndex does not redraw all the time with the basic l&f**/ return; } ! setSelectedIndex(-1); } repaint(); /** FIX-ME setSelectedIndex does not redraw all the time with the basic l&f**/ } --- 2357,2397 ---- } /** * Selects the specified object from the list. + * If the object passed is not present in the list, the selection is + * cleared. * * @param anObject the object to select * @param shouldScroll {@code true} if the list should scroll to display * the selected object, if one exists; otherwise {@code false} */ public void setSelectedValue(Object anObject,boolean shouldScroll) { ! E selectedValue = getSelectedValue(); ! //This will be true if both anObject and selectedObject are either ! // null or point to objects which return true on calling equals ! if((anObject == selectedValue) || ! (anObject != null && anObject.equals(selectedValue))) { ! return; ! } else { int i,c; ListModel<E> dm = getModel(); ! for(i=0,c=dm.getSize();i<c;i++) { ! Object object = dm.getElementAt(i); ! //Either both should be null or reference to objects which ! // return true with equals method ! if ((anObject == object) || ! anObject!= null && anObject.equals(object)) { setSelectedIndex(i); ! if (shouldScroll) ensureIndexIsVisible(i); repaint(); /** FIX-ME setSelectedIndex does not redraw all the time with the basic l&f**/ return; } ! } ! clearSelection(); } repaint(); /** FIX-ME setSelectedIndex does not redraw all the time with the basic l&f**/ }
< prev index next >