package com.example.client.utils; import org.jdesktop.swingx.JXDatePicker; import javax.swing.*; import javax.swing.table.TableCellEditor; import java.awt.*; import java.time.LocalDate; import java.time.ZoneId; import java.time.format.DateTimeFormatter; import java.util.Date; class DatePickerEditor extends AbstractCellEditor implements TableCellEditor { private JXDatePicker datePicker; private static final DateTimeFormatter FORMATTER = DateTimeFormatter.ofPattern("yyyy-MM-dd"); public DatePickerEditor(JXDatePicker datePicker) { this.datePicker = datePicker; } @Override public Component getTableCellEditorComponent(JTable table, Object value, boolean isSelected, int row, int column) { if (value instanceof String) { String dateStr = (String) value; if (dateStr != null && !dateStr.isEmpty()) { try { // 将字符串解析为 LocalDate,然后转换为 java.util.Date LocalDate localDate = LocalDate.parse(dateStr, FORMATTER); Date date = Date.from(localDate.atStartOfDay(ZoneId.systemDefault()).toInstant()); datePicker.setDate(date); } catch (Exception e) { // 如果解析失败,设置为空日期 datePicker.setDate(null); } } else { datePicker.setDate(null); } } return datePicker; } @Override public Object getCellEditorValue() { // 获取选择的日期并转换为字符串格式 Date date = datePicker.getDate(); if (date != null) { LocalDate localDate = date.toInstant().atZone(ZoneId.systemDefault()).toLocalDate(); return localDate.format(FORMATTER); } return null; } }