Swing JList:如何显示对象中的字符串?

Swing JList: how to show String from an object?

这让我很困惑。 我在 JList 中添加对象,如下所示:

public class RequestListModel extends AbstractListModel<Request> {

private static final long serialVersionUID = 1L;
private List<Request> data = null;

public RequestListModel (List<Request> data) {
    this.data = data;
}

@Override
public int getSize() {
    return this.data.size();
}

@Override
public Request getElementAt(int index) {
    Request request = data.get(index);
    return request;
}}

private JList<Request> getList() {
    ListModel<Request> model = new RequestListModel(this.requestList);
    if(jlist_from == null) {
        jlist_from = new JList<Request>(model);
    } else {
        jlist_from.setModel(model);
    }
    return jlist_from;
}

但是当我 运行 程序时,它只显示对象的地址:

那么我将如何显示对象中的文本? 非常感谢你。

it just show the object's address

JList 的默认渲染器只是调用对象的 toString() 方法,默认情况下是对象地址。

您应该为 JList 提供自定义渲染器。渲染允许您访问对象并以您希望的任何格式显示来自对象的任何数据。阅读 Using a Custom Renderer.

上的 Swing 教程部分

一个更简单的解决方案是在您的对象中实现自定义 toString() 方法。虽然不推荐这种方法,因为在调试时应该使用 toString() 来描述对象。

此外,没有理由创建自定义 ListModel。您可以只使用 DefaultListModel 来保存您的 Request 对象。