繁体   English   中英

如何从JList中删除所选项目

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM