public int[] getSelectedIndexes() { List l = (List) target; int len = l.countItems(); int sel[] = new int[len]; int nsel = 0; for (int i = 0; i < len; i++) { if (isSelected(i)) { sel[nsel++] = i; } } int selected[] = new int[nsel]; System.arraycopy(sel, 0, selected, 0, nsel); return selected; }
void initialize() { List li = (List) target; fm = getFontMetrics(li.getFont()); Font font = li.getFont(); if (font != null) setFont(font); // add any items that were already inserted in the target. int nitems = li.countItems(); if (nitems > 0) { String[] items = new String[nitems]; int maxWidth = 0; int width = 0; for (int i = 0; i < nitems; i++) { items[i] = li.getItem(i); width = fm.stringWidth(items[i]); if (width > maxWidth) { maxWidth = width; } } addItems(items, 0, maxWidth); } // set whether this list should allow multiple selections. setMultipleSelections(li.allowsMultipleSelections()); // select the item if necessary. int sel[] = li.getSelectedIndexes(); for (int i = 0; i < sel.length; i++) { select(sel[i]); } // make the visible position visible. // fix for 4676536 by [email protected] // we should call makeVisible() after we call select() // because of a bug in Windows which is manifested by // incorrect scrolling of the selected item if the list // height is less than an item height of the list. int index = li.getVisibleIndex(); if (index < 0 && sel.length > 0) { index = sel[0]; } if (index >= 0) { makeVisible(index); } super.initialize(); }
public void clear() { List l = (List) target; delItems(0, l.countItems()); }