ホームページ > Java > &#&チュートリアル > DocumentFilter はどのようにして JTextField 入力を整数に効果的に制限できるのでしょうか?

DocumentFilter はどのようにして JTextField 入力を整数に効果的に制限できるのでしょうか?

Susan Sarandon
リリース: 2024-12-08 10:39:12
オリジナル
768 人が閲覧しました

How Can a DocumentFilter Effectively Restrict JTextField Input to Integers?

JTextField 入力を整数にフィルタリング: DocumentFilter を使用した効果的なアプローチ

直感的ではありますが、キー リスナーを使用して JTextField の数値入力を検証するのは不十分です。代わりに、より包括的なアプローチは DocumentFilter を使用することです。

DocumentFilter: 堅牢なソリューション

DocumentFilter はドキュメントへの変更を監視し、入力検証をより詳細に制御できます。これにより、次のことが可能になります。

  • ドキュメントに挿入される前に入力をインターセプトします。
  • カスタム検証ロジックを実行し、無効な入力を拒否します。
  • さまざまな入力シナリオを処理します。切り取り、コピー、貼り付けを含みます。

による実装DocumentFilter

DocumentFilter を使用した MyIntFilter の実装例:

class MyIntFilter extends DocumentFilter {
    @Override
    public void insertString(FilterBypass fb, int offset, String string, AttributeSet attr) 
        throws BadLocationException {

        Document doc = fb.getDocument();
        StringBuilder sb = new StringBuilder();
        sb.append(doc.getText(0, doc.getLength()));
        sb.insert(offset, string);

        if (test(sb.toString())) {
            super.insertString(fb, offset, string, attr);
        } else {
            // warn the user and don't allow the insert
        }
    }

    private boolean test(String text) {
        try {
            Integer.parseInt(text);
            return true;
        } catch (NumberFormatException e) {
            return false;
        }
    }

    ... // Other overridden methods for replace and remove
}
ログイン後にコピー

DocumentFilter

  • の利点: 関係なくすべての入力を保証します。入力方法の検証を満たしている
  • 多用途: さまざまなデータ型、数値形式、将来の検証ニーズをサポートします。
  • クリーンなコード: 検証ロジックを一元化し、コードを削減します。

結論

DocumentFilter を利用すると、JTextField 入力を整数に効果的に制限し、有効なデータのみが入力されるようにすることができます。これは、主要なリスナーの制限に対処する、堅牢で信頼性の高いアプローチです。

以上がDocumentFilter はどのようにして JTextField 入力を整数に効果的に制限できるのでしょうか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート