JFormattedTextField が適切にクリアされない
数独ゲームでテキスト ボックスの基本クラスとして JFormattedTextField を使用すると、テキスト ボックスが適切にクリアされません有効な値の後に無効な値が入力された場合。代わりに JTextField を使用する場合、この問題は発生しませんが、JTextField は必要なレイアウトと入力制限を提供しません。
動作を理解する
JFormattedTextField を使用すると、次のことが維持されます。入力形式を強制する MaskFormatter (この場合、テキスト ボックスごとに整数は 1 つだけ)。無効な値が入力されると、JFormattedTextField はテキストを null に設定します。ただし、タブを前に移動するなど、その後のテキスト ボックスの操作により、以前に入力した有効な値を入力するオートコンプリート メカニズムがトリガーされる場合があります。
代替ソリューション
この問題を解決するには、入力とレンダリングをより正確に処理するカスタム コンポーネントの使用を検討してください。そのようなコンポーネントの例を以下に示します。CellTest は JPanel を拡張し、数字を表示するための JDigit ボタンを含みます。
JDigit Button
JDigit ボタン:
入力の改善
の処理 JFormattedTextField の代わりに CellTest を使用すると、入力検証をレンダリング プロセスから分離できます。これにより、テキスト ボックスの動作をより詳細に制御できるようになり、無効な値が適切に消去され、タブ移動によって予期しない値が表示されなくなります。
以上がJFormattedTextField が無効な数独エントリをクリアしないのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。