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