6

swt テーブル コントロールのセル エディターとして CDateTime を使用しようとしています。スタンドアロンの CDateTime サンプル (ここから) を実行すると、次のようになります。

通常の CDT の動作

CDateTime は次のように作成されます。

final CDateTime cdt = new CDateTime(shell, CDT.DROP_DOWN | CDT.DATE_SHORT | CDT.COMPACT);
cdt.setSelection(new Date());

ドロップダウンの原因となっているアイコンに注目してください。これはカレンダーのように見えます。月/年が表示され、ヘッダーの左隅に 2 つの矢印ボタンと「今日」ボタンがあります。日付を選択すると、日付もテキストボックスに正しく書き込まれます。

ただし、セルエディターとして追加しようとすると、次のようになります。

セル エディターとしての CDateTime

アイコンが異なり、ヘッダー部分が異なることに注意してください。また、私がどのように日付を選択し、この奇妙な数字を取得したかにも注目してください - 月は 32 です! - テキストボックス。ポップアップが消えると、日付は正しくなりますが、この奇妙な動作は奇妙に見えて心配です。

次のように CDateTime を作成しました。

    final int style = getStyle() | CDT.DATE_SHORT | CDT.DROP_DOWN | CDT.COMPACT ;
    this.dateTime = new CDateTime(parent, style);
    this.dateTime.setPattern("mm/dd/yyyy");

私は何を間違っていますか?

4

1 に答える 1

1

これは古い質問ですが、ここに答えがあります。設定したパターンが間違っています。「mm」は分を表します。代わりに、「MM」を使用して月を取得できます。

    dateTime.setPattern("MM/dd/yyyy");
于 2015-08-21T11:24:36.733 に答える