[英]Removing an item from the JList using ListModel as model type
我有使用ListModel
而不是DefaultListModel的JList
。 我現在不想改變類型,因為我在很多地方使用它。 我想從同一列表中刪除所選項目。 我該怎么做呢? 我使用以下代碼,但它不適合我。
made_list.removeSelectionInterval(
made_list.getSelectedIndex(), made_list.getSelectedIndex());
- 編輯 -
我在創建列表時使用以下代碼:
made_list = new javax.swing.JList();
made_list.setModel(new DefaultListModel());
然后在JButton
鼠標點擊事件中,當按下按鈕時,我使用以下代碼從列表中刪除所選項目
private void removeActionPerformed(java.awt.event.ActionEvent evt) {
//made_list.removeSelectionInterval(made_list.getSelectedIndex(),
//made_list.getSelectedIndex());
System.out.println(made_list.getModel());
DefaultListModel model = (DefaultListModel)made_list.getModel();
model.remove(1);
}
removeSelectionInterval除了選擇間隔之外,不會從模型或列表中刪除任何內容。 列表項保持不受影響。 我擔心你要么必須擴展你的ListModel並給它一個removeItem(...)方法以及監聽器和激活通知器等的能力......一個la AbstractListModel - 相當多工作的! 如果這是我的錢,我會走簡單的路線,只需使用DefaultListModel作為我的模型,因為這樣做更安全,更容易,並且將花費更少的時間。 我知道你聲明你不想使用這些,但我認為你會發現它比你的潛在替代品容易得多。
SSCCE的一個例子是這樣的:
import java.awt.event.*;
import javax.swing.*;
public class Foo1 {
private String[] elements = {"Monday", "Tueday", "Wednesday"};
private javax.swing.JList made_list = new javax.swing.JList();
public Foo1() {
made_list.setModel(new DefaultListModel());
for (String element : elements) {
((DefaultListModel) made_list.getModel()).addElement(element);
}
JButton removeItemBtn = new JButton("Remove Item");
removeItemBtn.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
removeActionPerformed(e);
}
});
JPanel panel = new JPanel();
panel.add(new JScrollPane(made_list));
panel.add(removeItemBtn);
JOptionPane.showMessageDialog(null, panel);
}
private void removeActionPerformed(ActionEvent e) {
System.out.println("made_list's model: " + made_list.getModel());
System.out.println("Model from a fresh JList: " + new JList().getModel());
DefaultListModel model = (DefaultListModel) made_list.getModel();
if (model.size() > 0) {
model.remove(0);
}
}
public static void main(String[] args) {
new Foo1();
}
}
您已經獲得了過去Swing教程不同部分的鏈接,以幫助解決問題。 這是有原因的。 它有助於解決您當前的問題。 它為您提供未來問題的參考。
您需要做的就是查看Swing教程的目錄,您將找到有關“如何使用列表”的部分,其中有一個工作示例,用於添加/刪除列表中的項目。 請先閱讀教程。
或者,如果您不記得如何找到Swing教程,那么請閱讀JList API,您將在其中找到指向同一教程的鏈接。
//First added item into the list
DefaultListModel dlm1=new DefaultListModel();
listLeft.setModel(dlm1);
dlm1.addElement("A");
dlm1.addElement("B");
dlm1.addElement("C");
// Removeing element from list
Object[] temp=listRight.getSelectedValues();
if(temp.length>0)
{
for(int i=0;i<temp.length;i++)
{
dlm1.removeElement(temp[i]);
}
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.