[英]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$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
}
如果使用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");
要刪除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);
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.