2

我有一个JList设置为ArrayList天数的。

public void setCalender(ArrayList<Day> calender) {
    this.calender = calender;
    listDays.setListData(this.calender.toArray());
}

每天包含一个日期/ID 和 3 个期间:

public class Day {
    private int date;
    private Period p1;
    private Period p2;
    private Period p3;

    public Day(int date) {
        this.date = date;
        p1 = new Period(1);
        p2 = new Period(2);
        p3 = new Period(3);
    }
}

例如,当列表呈现时,它会将每个列表项显示为“kkbs.Day@4d182e1e”。有没有办法制作一个固定的字符串来显示用户(即第 1 天),同时仍将整个对象保留在列表中以进行检索?

4

5 回答 5

4

为列表使用自定义单元格渲染器以根据需要格式化视图。或者,您可以toString()为对象定义 a,但渲染器更加通用。

于 2012-12-12T10:06:56.117 回答
4

您需要提供ListCellRenderer能够以您想要的方式描绘数据的能力

结帐如何使用列表了解更多信息

于 2012-12-12T10:07:53.673 回答
3

覆盖 Day 类中的 toString 方法:

@Override
public String toString() {
    return "Day" + date.toString(); 
}
于 2012-12-12T10:09:14.437 回答
2

我想您必须toString()在将 jList 扩展到您自己的列表后覆盖方法。

于 2012-12-12T10:06:53.080 回答
2

只需按照以下方式覆盖该toString()方法

public String toString()
{
    return "whatever string representation of your day class it is you want to return";
}

的默认实现toString将返回objectName@hashCode

于 2012-12-12T10:07:06.477 回答