0

这个线程上,我想出了如何将 JXDatePicker 添加到 JXTable(或 JTable)单元格中。但我现在有一个小问题。

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

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

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

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

可能是错不在与DatePickerCellEditor,可能与做某事有关tableModel。但是想不通。任何帮助表示赞赏..

谢谢!

4

2 回答 2

1

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

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

于 2012-08-06T06:50:39.357 回答
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您可能希望使用该Date值的所有列的情况下使用它...

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);
于 2012-08-06T09:13:36.613 回答