Como fazer para um jtextfield aceitar apenas número mas com exceção para vírgula e ponto?

Como fazer para um jtextfield aceitar apenas número mas com exceção para vírgula e ponto?
Tenho esta classe abaixo no meu projeto: Funciona muito bem, mas quero usar esta classe em um jtextfield que irá receber valores float (será preço do produto).

Mas aí não consigo usar (,) ou (.) para separar os centavos.

public class ApenasNumeros extends PlainDocument {

    @Override

    public void insertString(int offset, String str, javax.swing.text.AttributeSet attr) throws BadLocationException {
        super.insertString(offset, str.replaceAll("[^0-9]", ""), attr);
    }
    
    public void replace(int offset, String str, javax.swing.text.AttributeSet attr) throws BadLocationException {
        super.insertString(offset, str.replaceAll("[^0-9]", ""), attr);
    }
}

utilize JFormattedTextField, essa belezura existe para isso msm.

Se quizer o código de construção dele, a ultima linha e responsável por definir o formato que vc quer:

jFormattedTextField1 = new javax.swing.JFormattedTextField();
jFormattedTextField1.setFormatterFactory(new javax.swing.text.DefaultFormatterFactory(new javax.swing.text.NumberFormatter()));

ok, obrigado