我知道有与此相关的一些问题,但它们根本没有帮助我

我的代码很简单
我正在尝试删除列表中的第一项

DefaultListModel model = (DefaultListModel) jList1.getModel();
model.removeElementAt(0);


这给了我一个ClassCastException如下

Exception in thread "AWT-EventQueue-0" java.lang.ClassCastException: rfs.search$1 cannot be cast to javax.swing.DefaultListModel
at rfs.search.jTextField1KeyReleased(search.java:130)
at rfs.search.access$500(search.java:15)


“ rfs”是我的软件包名称,“ search.java”是包含jList1的Java文件

基本上我的代码是这样的(有一些netbeans自动生成的代码我没有在这里包括)

package rfs;

import javax.swing.DefaultListModel;


public class search extends javax.swing.JFrame {
    public search() {
        initComponents();

}
private void jTextField1KeyReleased(java.awt.event.KeyEvent evt){
    DefaultListModel dlm = (DefaultListModel) jList1.getModel();
    dlm.removeElementAt(0);

}

// Variables declaration - do not modify
private javax.swing.JList jList1;
private javax.swing.JScrollPane jScrollPane1;
private javax.swing.JTextField jTextField1;
// End of variables declaration


}

最佳答案

有两种方法,但两者相似:
方法1:
假设您的JList为jList1
现在要在jList1中使用DefaultListModel,您需要设置jList1模型,按照代码设置模型并在jList1中添加值:

jList1.setModel(new DefaultListModel());

DefaultListModel lm1=(DefaultListModel) jList1.getModel();

lm1.add(0, "A");
lm1.add(1, "B");
lm1.add(2, "C");
lm1.add(3, "D");
lm1.add(4, "E");


要删除first(0)项目,请遵循以下代码:

lm1.remove(0);


方式2:
在NetBeans中,请遵循以下步骤:
在拖放区域的第一个中,选择您的JList,然后右键单击并选择“自定义代码...”,然后在左侧将“默认代码”更改为“自定义创建”,然后根据以下代码更改代码(在右侧),

jList2 = new javax.swing.JList();
jList2.setModel(new DefaultListModel());
jScrollPanel.setViewportView(jList2);


这里jList2是您正在使用的JList的变量名

现在,您可以毫无例外地使用DefaultListModel。您可以按照以下方式将值添加到列表中

DefaultListModel listModel=(DefaultListModel)jList2.getModel();
listModel.add(0,"A");
listModel.add(1,"B");
listModel.add(2,"C");


并删除first(0)项只是做
listModel.remove(0);

07-24 21:34