ユーザーが 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