如何在JTable中设置特定的列设置?

时间:2010-05-05 18:17:24

标签: java swing jtable

如何让我的JTable显示每列的特定内容?

我可以将一个Object用于多个列吗?我想要一个显示日期(dd.mm.yyyy)的列和另一个显示时间(hh:mm)的列,但是现在它只显示Date对象的字符串表示形式。

public class AppointmentTableModel extends AbstractTableModel {
    ...
    @Override
    public Object getValueAt(int rowIndex, int columnIndex) {
        return appointments.get(rowIndex).getByColumn(columnIndex);
    }
}

public class Appointment {
    ...
    public Object getByColumn(int columnIndex) {
        switch (columnIndex) {
            case 0: return date;
            case 1: return date;
            case 2: return sample;
            case 3: return sample;
            case 4: return history;
            case 5: return comment;
        }
        return null;
    }
}

2 个答案:

答案 0 :(得分:3)

您可以为这两列设置特定的渲染器,一个将采用Date对象并将其格式化为日期字符串,另一个采用Date对象并将其格式化为时间字符串。

有关日期渲染的示例,请参阅this tutorial

答案 1 :(得分:1)

您唯一需要改变的是getByColumn

例如,您只需为case 0case 1应用两种不同的格式。


您可以使用SimpleDateFormat

SimpleDateFormat dateFormat = new SimpleDateFormat("MM/dd/yyyy");
SimpleDateFormat timeFormat = new SimpleDateFormat("HH:mm");
// ...
case 0: return dateFormat.format(date);
case 1: return timeFormat.format(date);