Vector<String> totalProducts = Products.getProductNames();
Vector<String> selectedProducts = Products.getSelectedProductNames();
selectedProducts向量是totalProducts的子向量(意味着selectedProducts包含totalProducts中的一个,多个或所有元素)。我想要的是将这两个向量组合在一起,并创建一个JList,该JList包含totalProducts中的所有元素以及已选择的selectedProducts元素。
我试过的
Vector<Integer> indices = new Vector<Integer>();
JList prdList = new JList(totalProducts);
for(int i = 0; i < totalProducts.size(); i++)
{
for(String name : selectedProducts)
{
if(totalProducts.contains(name)) indices.add(i);
}
}
Object [] objIndices = indices.toArray();
//... Cast from Object [] to int [] ....
prdList.setSelectedIndices(intIndices);
...但是这会选择最终JList中的所有元素。
以前我尝试过:
JList prdList = new JList(totalProducts);
for(String tName : totalProducts)
{
for(String sName : selectedProducts)
{
if(totalProducts.contains(sName)) prdList.setSelectedValue(sName, false);
}
}
...但是这个只选择了selectedProducts中的最后一个元素。
你能帮我做对吗?
最佳答案
您选择所有项目的尝试是这样做的,因为您要遍历每个项目,并且如果selectedProducts列表中的任何项目在总计列表中,则将迭代项目的索引添加到最终选择列表中。尝试将循环更改为以下形式:
for(int i = 0; i < totalProducts.size(); i++)
{
String name = totalProducts.get(i);
if(selectedProducts.contains(name)) indices.add(i);
}