我有JList
使用ListModel
而不是DefaultListModel。我现在不想改变类型,因为我在很多地方使用它。我想从同一列表中删除所选项目。我该怎么做呢?我使用以下代码,但它不适合我。
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);
}
答案 0 :(得分:6)
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();
}
}
答案 1 :(得分:3)
过去,您已获得指向Swing教程不同部分的链接,以帮助解决问题。这是有原因的。它有助于解决您当前的问题。它为您提供未来问题的参考。
您需要做的就是查看Swing教程的目录,您将找到有关“如何使用列表”的部分,其中有一个工作示例,用于添加/删除列表中的项目。请先阅读教程。
或者如果您不记得如何找到Swing教程,那么请阅读JList API,在那里您将找到指向同一教程的链接。
答案 2 :(得分:0)
//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]);
}
}