我正在运行以下代码:
public ArrayList<String> equipAvail;
{
equButton2 = new JButton();
equButton2.setText("Apply");
equButton2.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent evt) {
//read the contents of equlist2
for(int i=0;i<equList2.getModel().getSize();i++){
//fill equipAvail ArrayList with the contents of equlist2
//System.out.println(equList2.getModel().getElementAt(i));
//System.out.println(equList2.getModel().getElementAt(i) instanceof String);
equipAvail.add(equList2.getModel().getElementAt(i));
//pass equipAvail to the user's EquipmentAvailable property
user.setEquipmentAvailable(equipAvail);
}
}
});
}
如果我注释掉行 equipAvail.add(equList2.getModel().getElementAt(i));
,并运行当前注释掉的行 //System.out.println (equList2.getModel().getElementAt(i));
,它会将选择打印到控制台。
如果我运行行 //System.out.println(equList2.getModel().getElementAt(i) instanceof String);
,它会报告填充到 equList2 中的尽可能多的对象为 true
。
但不知何故,当我尝试如图所示运行它时,它甚至无法编译。给出错误“ArrayList 类型中的方法 add(String) 不适用于参数 (Object)”。如果我在 equalAvail 行末尾使用 .toString()
,它将编译,但当我单击 GUI 中的按钮时,会出现相同的错误。
我需要将 equipAvail
设为 ArrayList 并填充 equList2
中出现的所有字符串。
为什么我不能使用 equalAvail.add 将这些我知道是字符串的对象添加到 ArrayList 中?
如何使用 equList2 中的条目填充EquipAvail?
谢谢!!
就上下文而言,注意到 equList2
的生命周期如下所示可能会有所帮助:
private JList getEquList2() {
if(equList2 == null) {
ListModel equList2Model =
new DefaultComboBoxModel(
new String[] {""});
equList2 = new JList();
equList2.setModel(equList2Model);
equList2.setVisibleRowCount(4);
}
return equList2;
}
但是随后使用与“移动”按钮相关的 equList2.setListData(equList1.getSelectedValues());
命令进行更新,以包含一些附加数据,该按钮将 equList1 条目的子集移动到 equList2。
最佳答案
ListModel 是一个泛型类型,但您将其用作原始类型。
也许ListModel<String> = new DefaultComboxBoxModel<String>(new String[] {""})
关于java - ArrayList<String> 类型中的方法 add(String) 不适用于参数 (Object),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29956835/