Как сделать выбор даты (датапикер) в таблице?

 
 
 
Сообщения:52
Добрый день! Помогите, пожалуйста!

Как сделать выбор даты в таблице(JTable)? Нужно, чтобы весь столбец с датами был заточен на датапикер. Например, на "JXDatePicker" или любой другой...
Изменен:22 дек 2017 01:06
 
 
Сообщения:242
Можно попробовать так:
table.getColumnModel().getColumn(INDEX_OF_DATE_COLUMN).setCellRenderer(new DateCellRenderer());
table.getColumnModel().getColumn(INDEX_OF_DATE_COLUMN).setCellEditor(new DateCellEditor());

public class DateCellRenderer extends JXDatePicker implements TableCellRenderer {
    @Override
    public Component getTableCellRendererComponent(JTable table, Object value, boolean isSelected, boolean hasFocus, int row, int column) {
        setDate((Date)value);
        return this;
    }
}

public class DateCellEditor extends AbstractCellEditor implements TableCellEditor{
    private JXDatePicker datePicker = new JXDatePicker();

    {
        datePicker.getEditor().setEditable(false);
    }

    @Override
    public Component getTableCellEditorComponent(JTable table, Object value, boolean isSelected, int row, int column) {
        datePicker.setDate((Date)value);
        return datePicker;
    }

    @Override
    public Object getCellEditorValue() {
        return datePicker.getDate();
    }
}
 
 
Сообщения:52
vps:
Можно попробовать так:
table.getColumnModel().getColumn(INDEX_OF_DATE_COLUMN).setCellRenderer(new DateCellRenderer());
table.getColumnModel().getColumn(INDEX_OF_DATE_COLUMN).setCellEditor(new DateCellEditor());

public class DateCellRenderer extends JXDatePicker implements TableCellRenderer {
    @Override
    public Component getTableCellRendererComponent(JTable table, Object value, boolean isSelected, boolean hasFocus, int row, int column) {
        setDate((Date)value);
        return this;
    }
}

public class DateCellEditor extends AbstractCellEditor implements TableCellEditor{
    private JXDatePicker datePicker = new JXDatePicker();

    {
        datePicker.getEditor().setEditable(false);
    }

    @Override
    public Component getTableCellEditorComponent(JTable table, Object value, boolean isSelected, int row, int column) {
        datePicker.setDate((Date)value);
        return datePicker;
    }

    @Override
    public Object getCellEditorValue() {
        return datePicker.getDate();
    }
}

Спасибо! Помогло!
 
Модераторы:Нет
Сейчас эту тему просматривают:Нет