我正在运行以下代码:
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。 最佳答案
ListModel是通用类型,但是您将其用作原始类型。
也许ListModel<String> = new DefaultComboxBoxModel<String>(new String[] {""})