【问题标题】:Setting the date format in JXTable cell在 JXTable 单元格中设置日期格式
【发布时间】:2012-08-06 06:17:55
【问题描述】:

this thread 上,我已经弄清楚如何将 JXDatePicker 添加到 JXTable(或 JTable)单元格中。但我现在有一个小问题。

DatePicker 会根据我的需要弹出并正常工作。但我无法更改单元格中日期的显示格式。它以以下长格式显示。

Eg: Wed Aug 01 00:00:00 IST 2012

但我需要dd-MMM-yyyy 格式。

我尝试更改DatePickerCellEditor 的格式。它部分有效。这意味着,现在它根据该单元格处于焦点时的设置格式显示日期。但是当我专注于其他一些单元格时,它又回到了上述格式。

问题可能与DatePickerCellEditor 无关,可能与tableModel 有关。但是想不通。任何帮助表示赞赏..

谢谢!

【问题讨论】:

    标签: java datepicker swingx tablecelleditor jxtable


    【解决方案1】:

    根据您之前的问题,过程几乎相同,只是您想使用渲染器而不是编辑器

    public class DateCellRenderer extends DefaultTableCellRenderer {
    
        @Override
        public Component getTableCellRendererComponent(JTable jtable, Object value, boolean selected, boolean hasFocus, int row, int column) {
    
            if (value instanceof Date) {
    
                // You could use SimpleDateFormatter instead
                value = DateFormat.getDateInstance().format(value);
    
            }
    
    
            return super.getTableCellRendererComponent(jtable, value, selected, hasFocus, row, column);
    
        }
    

    然后,要应用渲染,您可以将其应用到特定列(因此只有该列会使用它),或者在 Date 之类的情况下,您可能希望使用 @987654324 将其用于所有列@值...

    JTable table = new JTable();
    
    DateCellRenderer renderer = new DateCellRenderer();
    // Apply for a single column
    table.getColumnModel().getColumn(0).setCellRenderer(renderer);
    // OR apply for all columns using the Date class
    table.setDefaultRenderer(Date.class, renderer);
    

    【讨论】:

    • @Anubis 条条大路通罗马 ;)
    • 谢谢@MadProgrammer。在我之前的帖子中 [stackoverflow.com/questions/11822526/…, kleopatra 给了我相同的答案,但他实现TableCellRenderer 的方式要简单得多。也感谢他..
    【解决方案2】:

    这是因为 TableCellEditor 仅在您真正编辑单元格值时使用。为了表示一个值,而不是在编辑模式下,使用 TableCellRenderer。

    我建议阅读article 以了解更多关于表格单元的渲染器和编辑器的概念。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-12-14
      • 2014-04-29
      • 2011-11-18
      • 2014-02-11
      相关资源
      最近更新 更多