如何让我的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;
}
}
答案 0 :(得分:3)
您可以为这两列设置特定的渲染器,一个将采用Date
对象并将其格式化为日期字符串,另一个采用Date
对象并将其格式化为时间字符串。
有关日期渲染的示例,请参阅this tutorial。
答案 1 :(得分:1)
您唯一需要改变的是getByColumn
。
例如,您只需为case 0
和case 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);