swing - JTable setCellRenderer 将文本字段格式化为最新?

标签 swing date jtable tablecellrenderer

我有一个 SQLite 数据库,其日期存储为 VARCHAR (yyyy-mm-dd),例如 '2013-01-25'。 我的查询从表中检索记录并将其显示为存储的状态。我需要将 JTable 中的 VARCHAR 数据显示为“2013 年 1 月 25 日星期五”。我怀疑对包含 VARCHAR 的列使用 setCellRenderer 是正确的方法。此外,我认为这将是一个两步过程:首先,将 VARCHAR 转换为日期值,然后根据需要格式化日期。如果我从 JTable 中获取 VARCHAR 值并将其显示在 JTextField 中,我可以按如下方式执行操作:

MyDate = new SimpleDateFormat("yyyy-MM-dd").parse(rs.getString("My_Date"));

然后根据需要格式化

MyDateStr = new SimpleDateFormat("EEEE MMMM d, yyyy").format(MyDate);

这一切都很好;但是,我需要在 JTable 列中进行格式化显示。我从未使用过 setCellRenderer,因此我需要一些入门帮助。

最佳答案

Rob Camick 发布关于 Table Format Renderers 的文章可以解决您的问题。

更新:

我尝试了一个示例(因为我也很好奇在 JTable 中查找 DateFormat ,但到目前为止我还没有这样做)使用 mKorbel代码。我作为输入给出的格式是“2013-01-25”

Date Format Example

import java.awt.Dimension;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.Locale;
import javax.swing.JFrame;
import javax.swing.JScrollPane;
import javax.swing.JTable;
import javax.swing.table.DefaultTableCellRenderer;

public class JTableDateFormat {
public static void main(String[] args) {
    Object[][] data = {
                       {"Amar", "2013-01-25"},
                       {"Sammy", "2013-01-25"} 
                      };
    Object[] columnNames = {"Name", "Date"};
    JTable table = new JTable(data, columnNames);
    table.getColumnModel().getColumn(1).setCellRenderer(new DateRenderer());
    JFrame frame = new JFrame();
    frame.add(new JScrollPane(table));
    frame.setSize(new Dimension(400, 100));
    frame.setVisible(true);
}
}


class DateRenderer extends DefaultTableCellRenderer {

private static final long serialVersionUID = 1L;
private Date dateValue;
private SimpleDateFormat sdfNewValue = new SimpleDateFormat("EE MMM dd hh:mm:ss z yyyy");
private String valueToString = "";

@Override
public void setValue(Object value) {
    if ((value != null)) {
        String stringFormat = value.toString();
        try {
            dateValue = new SimpleDateFormat("yyyy-mm-dd", Locale.ENGLISH).parse(stringFormat);
        } catch (ParseException e) {
            e.printStackTrace();
        }
        valueToString = sdfNewValue.format(dateValue);
        value = valueToString;
    }
    super.setValue(value);
}
}

关于swing - JTable setCellRenderer 将文本字段格式化为最新?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14529789/

相关文章:

java - Swing 菜单 Java 7 mac osx

java - 如何将 JEditorPane 保存为 pdf?

Javascript 日期时间至今

mysql - SQL查询打破月末的预订日期?

java - 获取一周中的前一天

java - 调整选项卡式 Pane 中选项卡的大小

java - 多个字符串以不同方式着色到 JTable 的同一单元格中

java - JTable 单元格中的按钮 : Keep Caption constant while storing data in the cell

java - 如何从 Java ResultSet 中确定列数?

java - 您如何创建一个立即触发,然后每 t 毫秒触发一次的 javax.swing.Timer?