我在以Date
格式显示JTable
时遇到麻烦。我的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
当我们在
Date
中讨论JTables
时,我将isCellEditable(.)
设置为true,但是无法编辑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);
关于java - 在Jtable/ResultSet中格式化日期,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/2412007/