Esempio di programma con KeyListener

Cercare di migliorarne il funzionamento eliminando i bachi…

package inputnumerico;

import java.awt.event.KeyEvent;
import java.awt.event.KeyListener;
import javax.swing.JTextField;

public class JNumberField extends JTextField implements KeyListener {
    
    private String oldText = "0";
    private double n = 0;
    
    public JNumberField() {
        this.setText("0");
        this.setColumns(10);
        this.addKeyListener(this);
    }

    public double getN() {
        return n;
    }

    public void setN(double n) {
        this.n = n;
    }

    @Override
    public void keyTyped(KeyEvent ke) {
    }

    @Override
    public void keyPressed(KeyEvent ke) {
    }

    @Override
    public void keyReleased(KeyEvent ke) {
        try {
            String newText = this.getText();
            n = Double.parseDouble(newText);
            oldText = newText;
        } catch (NumberFormatException numberFormatException) {
            this.setText(oldText);
        }
    }
    
}