Swing JList:如何显示对象中的String?

时间:2018-11-12 03:41:26

标签: java swing jlist

这使我感到困惑。 我在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;
}

但是当我运行程序时,它仅显示对象的地址: enter image description here

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

1 个答案:

答案 0 :(得分:0)

  

它只是显示对象的地址

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

您应该为JList提供一个自定义渲染器。渲染允许您访问对象并以所需的任何格式显示对象中的任何数据。阅读Using a Custom Renderer上Swing教程中的部分。

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

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