我正在运行以下代码:
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)”。如果我在equipAvail行的末尾使用.toString()
,它将编译,但是当我单击GUI中的按钮时,会给我相同的错误。
我需要equipAvail
成为一个ArrayList,并使用equList2
中显示的所有字符串进行填充。
为什么我不能使用equilAvail.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。
答案 0 :(得分:2)
ListModel是泛型类型,但您将其用作原始类型。
也许ListModel<String> = new DefaultComboxBoxModel<String>(new String[] {""})