при отладке вашей первой попытки (которая выглядит так, как будто должна работать, каково содержимое вашего массива intIndices? Потому что, похоже, он должен работать, предполагая, что преобразование массива работает.
однако, поскольку selectedproducts
гарантированно будет меньше элементов, чем общее количество, вы можете вместо этого повторить?
List<Integer> indices = new ArrayList<Integer>(selectedProducts.size());
for(String name : selectedProducts)
{
int index = totalProducts.indexOf(name);
if (index != -1)
indices.add(index);
}
, хотя, поскольку indexOf
- это линейный поиск в списке, вероятно,не имеет большого значения в любом случае.
Что касается вашей второй попытки, ListSelectionModel имеет методы для добавления выбранного индекса (addSelectionInterval(int index0, int index1)
), вы используете тот устанавливает (перезаписывает) выделение.
см. http://download.oracle.com/javase/6/docs/api/javax/swing/ListSelectionModel.html
в стороне: вы можете использовать List<>
вместо Vector<>
, поскольку вектор имеетмного ненужных накладных расходов на синхронизацию. Если не требуется синхронизация ....
редактировать исправлено копирование + вставка add (i) с add (index)