0

このスレッドでは、JXDatePickerをJXTable(またはJTable)セルに追加する方法を理解しました。しかし、私は今小さな問題を抱えています。

DatePickerがポップアップし、必要に応じて正常に動作します。ただし、セル内の日付の表示形式を変更することはできません。以下の長い形式で表示されます。

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

しかし、私はそれをdd-MMM-yyyyフォーマットで必要としています。

DatePickerCellEditorのフォーマットを変更してみました。それは部分的に機能します。つまり、そのセルにフォーカスがあるときに、設定された形式に従って日付が表示されるようになりました。しかし、他のセルに焦点を合わせると、再び上記の形式に戻ります。

障害がではない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 に答える