0

ユーザーが Double 値を Jtextfield に入力する必要があり、それが計算されるとします。
しかし、ユーザーが突然複数のピリオドを使用すると、NumberFormatException がトリガーされるため、ソリューションはドキュメント フィルターを使用して余分なピリオドを除外するか、例外をキャッチして無効な入力をユーザーに通知することになると思います。

現在DocumentFilterを使用して数字とピリオドのみを許可していますが、私の問題は2番目のピリオドを除外する方法です

PlainDocument filter = new PlainDocument();
            filter.setDocumentFilter(new DocumentFilter() {
                    @Override
                    public void insertString(FilterBypass fb, int off, String str, AttributeSet attr) 
                    throws BadLocationException 
                    {
                    fb.insertString(off, str.replaceAll("[^0-9.]", ""), attr);
                    } 
                    @Override
                    public void replace(FilterBypass fb, int off, int len, String str, AttributeSet attr) 
                    throws BadLocationException 
                    {
                    fb.replace(off, len, str.replaceAll("[^0-9.]", ""), attr);
                    }
            });

            apm.setDocument(filter);

無効な入力: 1.2.2

有効な入力: 1.22

4

2 に答える 2

0

はい、try catch ブロックを使用します。try ブロック内にハッピー パス (つまり、正しくフォーマットされた数値) を実装し、catch ブロック内にエラー ケースを実装します。たとえば、ボックスを赤でハイライトしたり、エラー メッセージを表示したりするには、そのロジックを catch ブロックに配置 (または呼び出し) します。

于 2013-10-06T18:04:08.127 に答える