[英]How to remove selected items from JList
我试图在用户单击按钮时从JList中删除所选项目。
目前我有这样的事情:
private void clickActionPerformed(java.awt.event.ActionEvent evt) {
myList.remove(myList.getSelectedIndex());
}
当我单击按钮删除项目时,我收到此错误:
java.lang.ArrayIndexOutOfBoundsException: Array index out of range: 3
如何修复此错误,我的代码甚至删除了多个项目?
如果从最高选择索引开始删除到最低值,则可以从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--]);
}
}
...
尝试删除对象而不是索引:
private JList<MyObject> list;
private DefaultListModel<MyObject> myobjectListModel;
public FabricaCoches()
{
....
myobjectListModel = new DefaultListModel<MyObject>();
list = new JList<MyObject>(myobjectListModel);
....
}
@Override
public void actionPerformed(ActionEvent arg0)
{
// get a list with selected objects
List<MyObject> selectedItems = list.getSelectedValuesList();
for (MyObject o: selectedItems)
myobjectListModel.removeElement(o);
}
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());
}
});
我想你正在使用某种ListModel来构造JList? 如果是这种情况,您可以执行以下操作:
DefaultListModel list = new DefaultListModel();
list.add("foo");
那么当你点击“黑名单 - 按钮”时你只需要这样做:
list.remove(JList.getSelectedIndex());
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.