Jtable / ResultSet中的格式化日期
我在JTable
中以我想要的格式显示Date
s时遇到问题。 我的JTable
是使用ResultSet和列表创建的。
我在getValueAt(.)
尝试了以下操作,但没有运气:
if(value instanceof Date) { //System.out.println("isDate"); DateFormat formatter = DateFormat.getDateInstance(); SimpleDateFormat f = new SimpleDateFormat("MM/dd/yy"); value = f.format(value); Date parsed = (Date) value; try { parsed = (Date) f.parse(value.toString()); } catch (ParseException e) { // TODO Auto-generated catch block e.printStackTrace(); } value = parsed.toString(); }
println(.)
永远不会打印,因此它甚至没有打印出来。 正在显示的格式是Apr 10, 1992
但我想要04/10/92
虽然我们讨论的是isCellEditable(.)
的Date
主题…我将isCellEditable(.)
视为真,但我无法编辑Date单元格。 你怎么做到这一点?
不要覆盖getValue
,而是使用TableCellRenderer
:
TableCellRenderer tableCellRenderer = new DefaultTableCellRenderer() { SimpleDateFormat f = new SimpleDateFormat("MM/dd/yy"); public Component getTableCellRendererComponent(JTable table, Object value, boolean isSelected, boolean hasFocus, int row, int column) { if( value instanceof Date) { value = f.format(value); } return super.getTableCellRendererComponent(table, value, isSelected, hasFocus, row, column); } }; table.getColumnModel().getColumn(0).setCellRenderer(tableCellRenderer);
正在显示的格式是1992年4月10日
听起来像Date的toString()表示存储在TableModel而不是Date对象。 因此,您需要检查数据如何从ResultSet复制到TableModel。 确保使用resultSet.getObject()方法。 或者问题是您在数据库中存储的字符串格式与您看到的格式相同。
无论如何,一旦您能够在TableModel中实际存储Date对象,请查看表格格式渲染器 ,它允许您在一行代码中创建具有自定义日期格式的自定义渲染器。
您应该创建DefaultTableCellRenderer的子类并覆盖setValue(Object)
然后为整列设置单元格渲染器。
public class DateCellRenderer extends DefaultTableCellRenderer { public DateCellRenderer() { super(); } @Override public void setValue(Object value) { SimpleDateFormat sdf = new SimpleDateFormat("MM/dd/yy"); setText((value == null) ? "" : sdf.format(value)); } }
然后在你的用户代码中做一些像JTable.getColumnModel().getColumn(index).setCellRenderer(new DateCellRenderer());
有一个第三方添加可用.. moment.js 。
只需通过nuget添加它,将脚本移动到您的内容脚本文件。 添加此行(示例)
使用Javascript:
然后我们在jtable中更改字段声明。
使用Javascript:
DateAdded: { title: 'Date added', width: '20%', sorting: false, display: function (data) { return moment(data.record.DateAdded).format('DD/MM/YYYY HH:mm:ss'); } }