2009-08-24 12 views

答えて

15

JFormattedTextFieldは使い勝手が悪いため悪いです。例えば、テキストフィールドが整数値を受け入れることができるだけの場合、JFormattedTextFieldは古いゴミを許可し、フォーカスが失われたときに文句を言うでしょう。さらに悪いことに、フォーカスが失われたときには、構成可能な動作の範囲があります(いずれも正しい選択ではないという明確な兆候です)。

また、 "k3wl"フォーマッタの選択があります。また、ドキュメントとのやりとりが悪いようです(DocumentFilterをインストールしようとしましたが、これはDocumentインターフェイスの一部ではありません)。

9

JFormattedTextFieldは使用するのが最も簡単なクラスではありませんが、問題はありますが、ほとんどのコンポーネントのように、いくつかのものでは合理的な仕事をし、他の仕事では悪い仕事をします。

実際には、MaskFormatterを使用するときにデータが入力されるときにInteger値を編集することができます。したがって、簡単な作業のためには効果的です。

データの編集は複雑な作業です。場合によっては、入力時にデータを編集する必要があります(整数値をチェックする場合)。場合によっては、入力後にデータを編集する必要があります(日付を検証する場合)。もちろん、無効なデータをどのように処理するかを決める必要があります。

重要ではないタスクを実行するときに、パラメータをある程度設定することができます。彼らはいつもあなたが望むやり方であなたが期待するように働くとは限らないので、このコンポーネントをいつ/いつ使うべきかを調べるために実験する必要があります。

+3

JFormattedTextFieldの主な問題は、一般的なタスクのコンポーネントが欠落しているのに対し、一般的なタスクではなくまれなユースケースに最適化されていることです。 AWTは十分に悪いですが、Swingは、GUIプログラミングの最先端についての手がかりがなく、同じミスを2回本当に悪くする人たちによって設計されました。 JavaとSwingのデザイナーが、DelphiやNeXtのInterface Builderが1990年代初頭からやっていたことや、どうやってそれをやったかを見ていれば、言語とSwingの両方が使いやすくなりました。 –

7

私はすぐにJFormattetTextFieldに苦労しています。私はNumberFormat.getPercentInstance()をパーセント値の書式設定に使用しようとしています。

.getValue()は、ユーザーが見ているのと同じ値を返しません。たとえば、書式付きテキストフィールドに25,5%と入力すると、26%に丸められますが、.getValue()0.255を返します。それは悪です。

+1

関連する質問:http://stackoverflow.com/questions/2206371/how-to-get-the-same-value-as-the-user-is-seeing-from-a-jformattedtextfield – Jonas

関連する問題