JList 所选的元素无法删除 Exception in thread "AWT-EventQueue-0" java.lang.ArrayIndexOutOfBoundsException: 1 >= 0

    由于在做socket在线聊天室,初次使用JList作为在线用户列表。虽然有很多不懂的,都是靠API完成的。昨天因为JList遇到了一些问题,影响了项目的进度。自己也参考了很多其他人的解决方案,但是和我的问题终究不同,以下是我的代码。

package com.socket.homework;

import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.io.IOException;

import javax.swing.*;
public class test {
    JFrame frame;
    JButton delete;
    DefaultListModel model;
    JList list;
    public static void main(String args[]){
        new test().createUI();
    }
    
    public void createUI(){
        frame = new JFrame("Test JList");
        delete = new JButton("删除");
        
        model = new DefaultListModel();
        list = new JList(model);
        String datas[] = {"aaa","bbb","ccc","ddd","eee","fff","ggg"};
        
        list.setListData(datas);  //错误做法
        
/*        //正确做法
        for(String data:datas){
            model.addElement(data);
        }*/
        
        delete.addActionListener(new ActionListener(){
            @Override
            public void actionPerformed(ActionEvent e) {
                Object values[] = list.getSelectedValues();
                for(Object value:values){
                    model.removeElement(value);
                }
            }
        });
        
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        frame.add(delete,"North");
        frame.add(list,"Center");
        frame.pack();
        frame.setVisible(true);
    }
}

     我之前是直接使用JList来添加数据,但是在删除的时候,使用DefaultListModel来删除。原因是:数组越界,DefaultListModel中的size为0,而所要删除的下标是1(list.getSelectedIndex())。修改之后,就可以删除一个或多个元素了。

 

posted @ 2012-08-28 16:41  刘小样的故事  阅读(1344)  评论(3编辑  收藏  举报