JList 如何以简单的方式删除项目?
JList how to remove an Item in simple way?
我知道有一些与此相关的问题,但他们根本没有帮助我
我的代码很简单
我正在尝试删除列表中的第一项
DefaultListModel model = (DefaultListModel) jList1.getModel();
model.removeElementAt(0);
这给了我如下的 ClassCastException
Exception in thread "AWT-EventQueue-0" java.lang.ClassCastException: rfs.search cannot be cast to javax.swing.DefaultListModel
at rfs.search.jTextField1KeyReleased(search.java:130)
at rfs.search.access0(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
}
如果您使用 Vector
初始化 JList
,对 Vector
的所有更改都将在 JList
中可见。
代码:
Vector<String> vector = new Vector<>();
vector.add("a");
vector.add("b");
vector.add("c");
JList<String> jlist = new JList<>(vector);
jlist.setSelectedIndices(new int[] {0, 1, 2});
System.out.println(jlist.getSelectedValuesList());
vector.remove(0);
jlist.setSelectedIndices(new int[] {0, 1, 2});
System.out.println(jlist.getSelectedValuesList());
输出:
[a, b, c]
[b, c]
有两种方法,但两者都很相似:
方式 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");
要删除第一个 (0) 项,请遵循以下代码:
lm1.remove(0);
方式 2:
在 NetBeans 中遵循这些步骤:
第一个在拖放区域 select 你的 JList 并右键单击 select "Customize Code..." 然后在左侧将 "default code" 更改为 "custom creation" 并更改代码(在右侧边)根据下面的代码,
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");
并删除第一个(0)项只是做
listModel.remove(0);
我知道有一些与此相关的问题,但他们根本没有帮助我
我的代码很简单 我正在尝试删除列表中的第一项
DefaultListModel model = (DefaultListModel) jList1.getModel();
model.removeElementAt(0);
这给了我如下的 ClassCastException
Exception in thread "AWT-EventQueue-0" java.lang.ClassCastException: rfs.search cannot be cast to javax.swing.DefaultListModel
at rfs.search.jTextField1KeyReleased(search.java:130)
at rfs.search.access0(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
}
如果您使用 Vector
初始化 JList
,对 Vector
的所有更改都将在 JList
中可见。
代码:
Vector<String> vector = new Vector<>();
vector.add("a");
vector.add("b");
vector.add("c");
JList<String> jlist = new JList<>(vector);
jlist.setSelectedIndices(new int[] {0, 1, 2});
System.out.println(jlist.getSelectedValuesList());
vector.remove(0);
jlist.setSelectedIndices(new int[] {0, 1, 2});
System.out.println(jlist.getSelectedValuesList());
输出:
[a, b, c]
[b, c]
有两种方法,但两者都很相似: 方式 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");
要删除第一个 (0) 项,请遵循以下代码:
lm1.remove(0);
方式 2: 在 NetBeans 中遵循这些步骤: 第一个在拖放区域 select 你的 JList 并右键单击 select "Customize Code..." 然后在左侧将 "default code" 更改为 "custom creation" 并更改代码(在右侧边)根据下面的代码,
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");
并删除第一个(0)项只是做
listModel.remove(0);