当前位置: 首页 > 知识库问答 >
问题:

将JList转换为DefaultListModel时出错[重复]

储国发
2023-03-14

我实现了一个按钮,可以简单地删除JList contactList中的一个“联系人”。程序应该做的是,如果按钮删除了contactList中的第一个元素“Broadcast”,将通过输出一条显示消息返回一个错误。否则,应该只是从联系人列表中删除联系人。

我的问题是如何使用默认列表模型正确从 JList 中删除联系人?我看到需要使用 DefaultListModel,因为 remove 函数不在 JList 或 ListModel 中。

尺寸为4的示例联系人列表可能是什么样子的:

[Broadcast]
[Andro]
[Denis]
[Micheal]
...

这是错误:

[java] Exception in thread "AWT-EventQueue-0" java.lang.ClassCastException: javax.swing.JList$4 cannot be cast to javax.swing.DefaultListModel
... //rest of error

代码:

private JList<String> listContacts;

//constructor:
listContacts = new JList<String>(controller.getContacts());
//gets contact list from controller class which gets contact list from client class.
listContacts.setModel(new DefaultListModel());

JButton deleteUser = new JButton("Delete User");
menuPanel.add(deleteUser,BorderLayout.EAST);
deleteUser.addActionListener(new MyButtonListener5());

class MyButtonListener5 implements ActionListener{
public void actionPerformed(ActionEvent e){
    DefaultListModel<String> list = (DefaultListModel)(listContacts.getModel());
    String contact = listContacts.getSelectedValue();
    int j = -1;
    for(int i = list.getSize()-1; i >= 0; i--){
        if(list.getElementAt(i).equals("Broadcast")) {
            controller.displayMsg("[ERROR] You cannot delete broadcast\n");
        }
        else if(list.getElementAt(i).equals(contact)){
            j = i;
        }
    }
    if(j != -1){
        list.remove(j); 
    }
}

共有1个答案

申屠健
2023-03-14
(DefaultListModel)list.remove(j); 

list.remove()返回从列表中删除的项目,在您的例子中是字符串。为什么要将其转换为默认列表模型?

还是你真的是说

((DefaultListModel<String>)list).remove(j); 

它将“list”转换为默认列表模型,然后调用该模型的删除()方法。但是“list”已经声明为默认列表模型,因此转换是多余的。只需摆脱转换。

 类似资料:
  • 问题内容: 我是Java的初学者。我真的需要从数组或返回()。有可能的?我无法将数组插入(构造函数)。 代码如下: 问题答案: 添加以下代码以将arraylist值添加至应该可以工作:

  • setList在调用setVisible(false)之前从browse窗口调用;ie.当浏览窗口消失时调用此方法。它执行方法中的所有操作,但不在MainMenu公共空号setFileList()中更新它{MainMenu mm=new MainMenu();mm.setlist(java_files);} list_1-jlist listmodel_1=DefaultListModel 我试图

  • 清理和生成项目 将“sourceCompatibility=”1.7“targetCompatibility=”1.7“”添加到分级文件。 谁能建议一下如何解决这个问题。

  • 问题内容: 我在函数上发现错误,从DatatypeFactory df初始化newInstance()方法后,它显示错误结果,我得到了另一个错误: 我只是将包裹名称从 然后投射: 问题答案: 这是不可能的 投 自到。您需要从一种类型 转换 为另一种类型:

  • 问题内容: 我正在尝试创建一个简单的程序来管理员工。尝试添加新员工时,我似乎无法让该员工显示在Jlist上。 主机… 添加员工的对话… 这就是我用来添加员工的方法 我认为这是正确的方法,但似乎无效。任何帮助将不胜感激。 问题答案: 有两个问题, 第一个: 不好:。使用equals(…)或equalsIgnoreCase(…)。理解检查是否绝对不是您感兴趣的 引用 相等性。您需要 函数 相等性,这是

  • 如果我有以下场景