この質問ではIs there any way to accept only numeric values in a JTextField?の回答の1つは、JFormattedTextFieldに問題があることを示唆しています。なぜJFormattedTextFieldが悪いですか?
私はまだ使っていませんが、このクラスの問題を誰かに広げてもらえませんか?
この質問ではIs there any way to accept only numeric values in a JTextField?の回答の1つは、JFormattedTextFieldに問題があることを示唆しています。なぜJFormattedTextFieldが悪いですか?
私はまだ使っていませんが、このクラスの問題を誰かに広げてもらえませんか?
JFormattedTextField
は使い勝手が悪いため悪いです。例えば、テキストフィールドが整数値を受け入れることができるだけの場合、JFormattedTextField
は古いゴミを許可し、フォーカスが失われたときに文句を言うでしょう。さらに悪いことに、フォーカスが失われたときには、構成可能な動作の範囲があります(いずれも正しい選択ではないという明確な兆候です)。
また、 "k3wl"フォーマッタの選択があります。また、ドキュメントとのやりとりが悪いようです(DocumentFilter
をインストールしようとしましたが、これはDocument
インターフェイスの一部ではありません)。
JFormattedTextFieldは使用するのが最も簡単なクラスではありませんが、問題はありますが、ほとんどのコンポーネントのように、いくつかのものでは合理的な仕事をし、他の仕事では悪い仕事をします。
実際には、MaskFormatterを使用するときにデータが入力されるときにInteger値を編集することができます。したがって、簡単な作業のためには効果的です。
データの編集は複雑な作業です。場合によっては、入力時にデータを編集する必要があります(整数値をチェックする場合)。場合によっては、入力後にデータを編集する必要があります(日付を検証する場合)。もちろん、無効なデータをどのように処理するかを決める必要があります。
重要ではないタスクを実行するときに、パラメータをある程度設定することができます。彼らはいつもあなたが望むやり方であなたが期待するように働くとは限らないので、このコンポーネントをいつ/いつ使うべきかを調べるために実験する必要があります。
私はすぐにJFormattetTextFieldに苦労しています。私はNumberFormat.getPercentInstance()
をパーセント値の書式設定に使用しようとしています。
.getValue()
は、ユーザーが見ているのと同じ値を返しません。たとえば、書式付きテキストフィールドに25,5%
と入力すると、26%
に丸められますが、.getValue()
は0.255
を返します。それは悪です。
関連する質問:http://stackoverflow.com/questions/2206371/how-to-get-the-same-value-as-the-user-is-seeing-from-a-jformattedtextfield – Jonas
JFormattedTextFieldの主な問題は、一般的なタスクのコンポーネントが欠落しているのに対し、一般的なタスクではなくまれなユースケースに最適化されていることです。 AWTは十分に悪いですが、Swingは、GUIプログラミングの最先端についての手がかりがなく、同じミスを2回本当に悪くする人たちによって設計されました。 JavaとSwingのデザイナーが、DelphiやNeXtのInterface Builderが1990年代初頭からやっていたことや、どうやってそれをやったかを見ていれば、言語とSwingの両方が使いやすくなりました。 –