Criar um money document para numeros double

Pessoal estou extendendo plain document para ter um tipo que aceite valores double:

import javax.swing.text.AttributeSet;
import javax.swing.text.BadLocationException;
import javax.swing.text.PlainDocument;

public class MoneyDocument extends PlainDocument {  
		
		public void insertString(int offs, String str, AttributeSet a)   
            throws BadLocationException {  

			
			if (str.equals(".") || str.equals(","))
			{
					super.insertString(offs, ".", a); 
			}
			else
			{	
				super.insertString(offs, str.replaceAll("[^0-9]", ""), a); 
			}
        }  
}

Eu peguei o exemplo do numberDocument e só alterei para que ele não eceite virgula, se o cara digitar ponto ou virgula
só vai sair ponto. Porém ele aceita que se digite mais de um ponto. Queria saber como contornar isso. Desde já obrigado!

Você pode usar o getText para conferir o ultimo caracter digitado, assim se for ponto não insere.

if (str.contains(".") || str.contains(","))

Não poderia usar um getText porque essa classe é usada para mais de um componente.
E também o str.contains não resolve, o str possui somente o caractere que está sendo digitado naquele momento?
Agradeço as sugestões mas será que alguém tem mais algo?

[quote=jimmyhc]

if (str.contains(".") || str.contains(",")) [/quote]

Esse str é a string sendo inserida, não a existente…