我创建了一个类来存储两个属性
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;
}
}
Run Code Online (Sandbox Code Playgroud)
Netbeans GUI 为我创建的 JList 声明为
private javax.swing.JList<String> jList1;
Run Code Online (Sandbox Code Playgroud)
并初始化了一个 DefaultListModel
private DefaultListModel<MailEntry> listModel = new DefaultListModel<>();
Run Code Online (Sandbox Code Playgroud)
并将其设置为模型
jList1.setModel(listModel);
Run Code Online (Sandbox Code Playgroud)
但我得到的是
error: incompatible types: DefaultListModel<MailEntry> cannot be converted to ListModel<String>
jList1.setModel(listModel);
Run Code Online (Sandbox Code Playgroud)
似乎 jList 需要一个字符串模型。但我想存储更多特定于项目的信息,这些信息可以通过 GUI 访问。
我该如何解决?
问题是你已经声明jList1为...
private javax.swing.JList<String> jList1;
Run Code Online (Sandbox Code Playgroud)
但是您将模型声明为...
DefaultListModel<MailEntry> listModel = new DefaultListModel<>();
Run Code Online (Sandbox Code Playgroud)
MailEntry并且String不是兼容的类,并且JList期望ListModel<String>基于模型。
您需要更改JList声明以支持您的模型,例如
private javax.swing.JList<MailEntry> jList1;
Run Code Online (Sandbox Code Playgroud)
由于您使用的是 Netbean 的表单编辑器(不要让我开始),您需要JList从“导航器”中选择
从“属性”选项卡中选择“代码”选项卡...
并更改Type Parameters以满足您的要求