import java.awt.*;
import java.applet.*;
import javax.swing.*;
import java.awt.event.*;public class ListModelDemo extends JApplet{
private DefaultListModel listModel = new DefaultListModel();
private JList jlst = new JList (listModel);
private JButton jbtAdd = new JButton("Add new item");
private JButton jbtRemove = new JButton ("Remove selected item");

public ListModelDemo(){
listModel.addElement("Item1");
listModel.addElement("Item2");
listModel.addElement("Item3");
listModel.addElement("Item4");
listModel.addElement("Item5");
listModel.addElement("Item6");

JPanel panel = new JPanel();
panel.add(jbtAdd);
panel.add(jbtRemove);

getContentPane().add(panel, BorderLayout.NORTH);
getContentPane().add(new JScrollPane(jlst),BorderLayout.CENTER);




jbtAdd.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent e){
String newItem = JOptionPane.showInputDialog("Enter a new item ");
if (newItem != null)
if (jlst.getSelectedIndex() == -1)
listModel.addElement(newItem);
else
listModel.add(jlst.getSelectedIndex(), newItem);
}

});


jbtRemove.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent e){

        listModel.remove(jlst.getSelectedIndex());

}
});



}
    
}           
这里的删除只能删除自己所选的第一个元素,怎样才能删除自己所选的所有的元素?
还有这里再删除的时候,如果没有选元素时,会引起一个错误,怎样更正呢?

解决方案 »

  1.   

    JList设成可复选的了么?如果设了,用getSelectedindexes()(好像是这个方法,反正返回的是个选中元素索引的数组)。循环一下就删完了。
    至于报错,你没选东西的时候用getSelectedindex()获取的返回值是-1,拿去删除当然会报数组越界错误,删之前判断下是否>-1就行了