如何从JList中删除所选项目

时间:2014-03-30 12:18:23

标签: java jlist

我试图在用户点击按钮时从JList中删除所选项目。

目前我有这样的事情:

private void clickActionPerformed(java.awt.event.ActionEvent evt) {
   myList.remove(myList.getSelectedIndex());
}

当我点击按钮删除项目时,我收到此错误:

java.lang.ArrayIndexOutOfBoundsException: Array index out of range: 3

如何修复此错误,我的代码是否删除了多个项目?

4 个答案:

答案 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());