класс DateCellEditor:
Код | import com.toedter.calendar.JDateChooser;
import javax.swing.*; import javax.swing.table.TableCellEditor; import java.awt.*; import java.awt.event.MouseEvent; import java.util.EventObject; import java.util.Date;
public class DateCellEditor extends AbstractCellEditor implements TableCellEditor { JDateChooser dateChooser = new JDateChooser();
public Component getTableCellEditorComponent(JTable table, Object value, boolean isSelected, int row, int column) { dateChooser.setDate((Date) value); dateChooser.setDateFormatString("dd.mm.yyyy"); return dateChooser; }
// Enables the editor only for double-clicks. public boolean isCellEditable(EventObject evt) { if (evt instanceof MouseEvent) { return ((MouseEvent) evt).getClickCount() >= 2; } return true; }
// Returns the current value. public Object getCellEditorValue() { return dateChooser.getDate(); } }
|
так я его добавляю в column model (упростил до минимума):
Код | public class CardsTableColumnModel extends DefaultTableColumnModel { public CardsTableColumnModel() { DateCellEditor dateCellEditor = new DateCellEditor(); column = new TableColumn(); column.setModelIndex(CardsTableModel.DATE_OF_LOAN_COLUMN); column.setHeaderValue("Date of loan"); column.setPreferredWidth(200); column.setCellRenderer(cellRenderer); column.setCellEditor(dateCellEditor); addColumn(column); } }
|
Проблемма в том что формат строки даты принимает вид "dd.mm.yyyy" только после входа в режим редактирования (по двойному клику). Вне режима редактирования строка в таблице имеет вид "Fri Mar 17 00:00:00 EET 2006". Мне надо чтобы в ячейке всегда была строка формата "dd.mm.yyyy". |