Hola, quiero crear un TextField javafx donde el usuario solo puede ingresar en el pedido actual A11111111A [cerrado]

Entonces, la primera y la última entrada deben ser letras, y entre ellas solo deben estar los números. Aquí está mi código:

tf.textProperty().addListener(new ChangeListener<String>() {
        public void changed(final ObservableValue<? extends String> ov, final String oldValue, final String newValue) {

            String text_of_first_letter = tf.getText().substring(0, 1);
            if (tf.getText().length() > 1 ) {

                if(!newValue.matches("\\d*")) {

                    tf.setText(newValue.replaceFirst("[^\\d]", ""));
                }

            }
            else if(tf.getText().length() == 1){
                System.out.println("ktu");
                tf.setText(newValue.replaceFirst("[^\\d]", text_of_first_letter));
            }
        }
    });

Respuestas a la pregunta(1)

Su respuesta a la pregunta