< prev index next >

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

Print this page

    @@ -2178,28 +2178,11 @@
          * @see #removeSelectionInterval
          * @see #addListSelectionListener
          */
         @Transient
         public int[] getSelectedIndices() {
    -        ListSelectionModel sm = getSelectionModel();
    -        int iMin = sm.getMinSelectionIndex();
    -        int iMax = sm.getMaxSelectionIndex();
    -
    -        if ((iMin < 0) || (iMax < 0)) {
    -            return new int[0];
    -        }
    -
    -        int[] rvTmp = new int[1+ (iMax - iMin)];
    -        int n = 0;
    -        for(int i = iMin; i <= iMax; i++) {
    -            if (sm.isSelectedIndex(i)) {
    -                rvTmp[n++] = i;
    -            }
    -        }
    -        int[] rv = new int[n];
    -        System.arraycopy(rvTmp, 0, rv, 0, n);
    -        return rv;
    +        return getSelectionModel().getSelectedIndices();
         }

         /**
          * Selects a single cell. Does nothing if the given index is greater

    @@ -2299,30 +2282,28 @@
          *
          * @since 1.7
          */
         @BeanProperty(bound = false)
         public List<E> getSelectedValuesList() {
    -        ListSelectionModel sm = getSelectionModel();
             ListModel<E> dm = getModel();
    +        int[] selectedIndices = getSelectedIndices();

    -        int iMin = sm.getMinSelectionIndex();
    -        int iMax = sm.getMaxSelectionIndex();
    +        if (selectedIndices.length > 0) {
             int size = dm.getSize();
    -
    -        if ((iMin < 0) || (iMax < 0) || (iMin >= size)) {
    +            if (selectedIndices[0] >= size) {
                 return Collections.emptyList();
             }
    -        iMax = iMax < size ? iMax : size - 1;
    -
             List<E> selectedItems = new ArrayList<E>();
    -        for(int i = iMin; i <= iMax; i++) {
    -            if (sm.isSelectedIndex(i)) {
    +            for (int i : selectedIndices) {
    +                if (i >= size)
    +                    break;
                     selectedItems.add(dm.getElementAt(i));
                 }
    -        }
             return selectedItems;
         }
    +        return Collections.emptyList();
    +    }

         /**
          * Returns the smallest selected cell index; <i>the selection</i> when only
          * a single item is selected in the list. When multiple items are selected,

< prev index next >