Java Swing: как добавить CellRenderer для отображения даты? - PullRequest
0 голосов
/ 06 мая 2010

У меня есть таблица:

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, чтобы открыть другой экран с соответствующим назначением в качестве параметра.

1 Ответ

0 голосов
/ 06 мая 2010

См. Рендеринг таблицы формата для отображения даты.

См. Отображение строки таблицы для выделения линии, основанной на значении ячейки.

Edit:

Вот как я создал данные для таблицы в записи блога:

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 с вышеуказанными данными и докажите себе, что концепция работает. Затем выясните, что вы сделали не так с вашим реальным кодом.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...