我试图在用户点击按钮时从JList中删除所选项目。
目前我有这样的事情:
private void clickActionPerformed(java.awt.event.ActionEvent evt) {
myList.remove(myList.getSelectedIndex());
}
当我点击按钮删除项目时,我收到此错误:
java.lang.ArrayIndexOutOfBoundsException: Array index out of range: 3
如何修复此错误,我的代码是否删除了多个项目?
答案 0 :(得分:4)
如果从最高选择索引开始删除到最低值,则可以从DefaultListModel中删除多个项目。像这样:
@Override
public void actionPerformed(ActionEvent e) {
switch(e.getActionCommand()){
case "Remove": {
int index = this.list[0].getSelectedIndices().length - 1;
while (this.list[0].getSelectedIndices().length != 0) {
this.defaultListModel[0].removeElementAt(this.list[0].getSelectedIndices()[index--]);
}
}
...
答案 1 :(得分:3)
尝试删除对象而不是索引:
true
}
答案 2 :(得分:1)
Object[] oo=new Object[] { "Clark", "Skill" };
for(Object o :oo)
model.addElement(o);
final JList list = new JList(model);
JButton btnDelete = new JButton("Delete");
btnDelete.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
if(list.getSelectedIndex()>=0)
model.remove(list.getSelectedIndex());
}
});
答案 3 :(得分:1)
我想你正在使用某种ListModel来构造JList?如果是这种情况,您可以执行以下操作:
DefaultListModel list = new DefaultListModel();
list.add("foo");
然后你需要在你的"黑名单 - 按钮"点击了:
list.remove(JList.getSelectedIndex());