我有一张表:
public class AppointmentTableModel extends AbstractTableModel {
private int columns;
private int rows;
ArrayList<Appointment> appointments;...
因此,表格的每一行都包含一个约会。
public class Appointment {
private Date date;
private Sample sample;
private String comment;
private ArrayList<Action> history;
public Appointment(Date date, Sample sample, String comment) {
this.date = date;
this.sample = sample;
this.comment = comment;
this.history = new ArrayList<Action>();
}
public Object getByColumn(int columnIndex) {
switch (columnIndex) {
case 0: return date;//Date: dd:mm:yyyy
case 1: return date;//Time mm:hh
case 2: return sample;//sample.getID() int (sampleID)
case 3: return sample;//sample.getNumber string (telephone number)
case 4: return sample;//sample.getName string (name of the person)
case 5: return history;//newst element in history as a string
case 6: return comment;//comment as string
}
return null;
我在评论中添加了这个意思。我如何创建CellRenderers来显示它。
table.getColumnModel().getColumn(1).setCellRenderer(new DateRenderer());
我还希望在日期晚于当前日期时添加要用红色绘制的整行。 然后是另一个包含JButton的列,用相应的约会作为参数打开另一个屏幕。
答案 0 :(得分:0)
请参阅Table Format Renderers了解日期。
请参阅Table Row Rendering,根据单元格的值突出显示一行。
编辑:
这就是我在博客条目中为表创建数据的方式:
String[] columnNames = {"Date/Time", "Time", "Percent", "Currency"};
Object[][] data =
{
{new Date(108, 0, 10), new Date(), new Double(.10), new Double(00075.25) },
{new Date(108, 1, 15), new Date(), new Double(.50), new Double(01275.75) },
{new Date(108, 2, 20), new Date(), new Double(.99), new Double(-4275.00) }
};
从博客图片中可以看出,当您在模型中存储Date对象时,它会使用指定的日期或时间正确格式化。
忘掉你真正的程序,用上面的数据创建一个SSCCE,并向自己证明这个概念是有效的。然后弄清楚你的真实代码出了什么问题。