gpt4 book ai didi

rendering - JTable 单元格渲染

转载 作者:行者123 更新时间:2023-12-04 20:22:52 25 4
gpt4 key购买 nike

我正在获取数据库的数据并显示在表格中。

我的 getColumnClass 是

@Override
public Class<? extends Object> getColumnClass(int column) {
return getValueAt(0, column).getClass();
}

当我打印值时,我得到的类名是 java.sql.Timestamp,但是当它显示时我有问题,它只显示 dd/MM/yyyy,但我需要它来显示 dd/MM/yyyy HH :mm,我怎样才能做到这一点?

除此之外,我需要检查数据时间是否小于今天然后禁用该行

最佳答案

我知道这是一个非常古老的问题,但我遇到了一个非常相似的问题,并决定为该问题发布更好的解决方案。

首先,您应该定义一个新类:TimestampCellRenderer.java

package gui;

import java.text.DateFormat;
import java.text.SimpleDateFormat;
import javax.swing.table.DefaultTableCellRenderer;

public class TimestampCellRenderer extends DefaultTableCellRenderer {

DateFormat formatter = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss.SSS");

public TimestampCellRenderer() {
super();
}

public void setValue(Object value) {
if (formatter == null) {
formatter = DateFormat.getDateInstance();
}
setText((value == null) ? "" : formatter.format(value));
}
}

然后在您的 GUI 类中,将此定义添加到您的类中:
yourTable.getColumnModel().getColumn(1).setCellRenderer(new TimestampCellRenderer());

在这种情况下,我决定格式化第一列,但在表模型中定义常量是一个非常好的做法。

最好的部分是您可以将您的代码与使用 Timestamp 数据类型的其他表重用。

希望这可以帮助!

关于rendering - JTable 单元格渲染,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4463736/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com