「労働者が自分の仕事をうまくやりたいなら、まず自分の道具を研ぎ澄まさなければなりません。」 - 孔子、「論語。陸霊公」
表紙 > プログラミング > DocumentFilter はどのようにして JTextField 入力を整数に効果的に制限できるのでしょうか?

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

2025 年 1 月 1 日に公開
ブラウズ:369

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 入力を整数に変換し、有効なデータのみが入力されるようにします。これは、主要なリスナーの制限に対処する、堅牢で信頼性の高いアプローチです。

最新のチュートリアル もっと>

免責事項: 提供されるすべてのリソースの一部はインターネットからのものです。お客様の著作権またはその他の権利および利益の侵害がある場合は、詳細な理由を説明し、著作権または権利および利益の証拠を提出して、電子メール [email protected] に送信してください。 できるだけ早く対応させていただきます。

Copyright© 2022 湘ICP备2022001581号-3