Java Swing DefaultListModel 包含存储更多信息

标签 java swing

我创建了一个类来存储两个属性

public class MailEntry {
    private String mail;
    private MailFormat format; // this is an enum

    public MailEntry(String mail, MailFormat format) {
        this.mail = mail;
        this.format = format;
    }

    public String getMail() {
        return mail;
    }

    public MailFormat getFormat() {
        return format;
    }
}

Netbeans GUI 为我创建的 JList 声明为

    private javax.swing.JList<String> jList1;

并初始化了一个DefaultListModel

private DefaultListModel<MailEntry> listModel = new DefaultListModel<>();

并将其设置为模型

jList1.setModel(listModel);

但是我得到的是

 error: incompatible types: DefaultListModel<MailEntry> cannot be converted to ListModel<String>
    jList1.setModel(listModel);

jList 似乎需要一个字符串模型。但我想存储更多特定于项目的信息,这些信息可以通过 GUI 访问。

我该如何解决这个问题?

最佳答案

问题是你已经声明了 jList1作为...

private javax.swing.JList<String> jList1;

但是您将模型声明为...

DefaultListModel<MailEntry> listModel = new DefaultListModel<>();

MailEntryString不兼容的类和 JList期待 ListModel<String>基于模型。

您需要更改 JList支持您的模型的声明,例如

private javax.swing.JList<MailEntry> jList1;

由于您使用的是 Netbean 的表单编辑器(别让我开始),因此您需要选择 JList从“导航器”

Navigator

从“属性”选项卡中选择“代码”选项卡...

Properties

并更改Type Parameters满足您的要求

关于Java Swing DefaultListModel 包含存储更多信息,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36778809/

相关文章:

java - Java 中的 Object 、 Reference ID 和 Reference Variable 有什么区别?

java - 处理 JDialog 和 JToggleButton 的状态和事件序列

java - 在发生其他事情之前必须完成的对话

java - 如何在 Swing 中绘制油漆

Java 网络摄像头捕获和显示

java - 将 Tomcat 日志发送到 Logstash

java - 时区在 Windows 服务器中无法正常工作

java - 定位 .jar 文件中的内部目录 -- java

java - 是否有关于使用 Hessian 时可能抛出哪些运行时异常或潜在原因的文档?

java - 用于呈现未知行数的 JTable