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);
}

08-05 12:01