tags:

views:

98

answers:

1

I have a Table:

public class AppointmentTableModel extends AbstractTableModel {
    private int columns;
    private int rows;
    ArrayList<Appointment> appointments;...

So each row of the table contains one Appointment.

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;

I added in comments what this one is going to mean. How would I create CellRenderers to display it like this.

   table.getColumnModel().getColumn(1).setCellRenderer(new DateRenderer());

I also want to add the whole row to be painted in red when the date is later then the current date. And then another column that holds a JButton to open up another screen with the corresponding Appointment as parameter.

A: 

See Table Format Renderers for rendering a date.

See Table Row Rendering for highlighting a line based on the value of a cell.

Edit:

This is how I created the data for table in the blog entry:

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) }
};

As you can see from the blog image, when you store a Date object in the model it is formatted correctly with the specified date or time.

Forget about your real program and create a SSCCE with the above data and prove to yourself that the concept works. Then figure out what you did wrong with your real code.

camickr
I did what you said for the format renderer.But now my cell contains the current Date and not the date from the data.
HansDampf
Then you did it wrong. A renderer can only display data from the TableModel.
camickr