【发布时间】:2015-04-30 00:14:46
【问题描述】:
我正在运行以下代码:
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 中的尽可能多的对象为真。
然而不知何故,当我尝试如图所示运行它时,它甚至无法编译。给出错误“ArrayList 类型中的方法 add(String) 不适用于参数 (Object)”。如果我在equipAvail 行的末尾使用.toString(),它会编译,但是当我单击GUI 中的按钮时会出现同样的错误。
我需要 equipAvail 成为一个 ArrayList 并填充出现在 equList2 中的所有字符串。
为什么我不能使用 equilAvail.add 将这些我知道是字符串的对象添加到 ArrayList 中?
如何使用 equList2 中的条目填充 equiAvail?
谢谢!!
关于上下文,注意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。
【问题讨论】:
标签: java string arraylist jlist