Manejo de eventos de edición en un JTextField

Tengo un formulario de inicio de sesión donde un usuario puede ingresar sus credenciales para iniciar sesión. Tengo un JLabelque sirve para mostrar el texto que le dice al usuario que el nombre de usuario no puede estar vacío. Esta etiqueta se muestra después de que un usuario hace clic en el botón de inicio de sesión cuando el campo de texto está vacío.

Quiero que en el momento en que el usuario comience a escribir en el campo de texto, la etiqueta con la información desaparezca. ¿Cómo logro este comportamiento?

Aquí está el código:

public class JTextFiledDemo {

private JFrame frame;

JTextFiledDemo() {
    frame = new JFrame();
    frame.setVisible(true);
    frame.setSize(300, 300);
    frame.setLayout(new GridLayout(4, 1));
    frame.setLocationRelativeTo(null);
    iniGui();
}

private void iniGui() {

    JLabel error = new JLabel(
            "<html><font color='red'> Username cannot be empty!<></html>");

    error.setVisible(false);
    JButton login = new JButton("login");
    JTextField userName = new JTextField(10);

    frame.add(userName);
    frame.add(error);
    frame.add(login);
    frame.pack();

    login.addActionListener((ActionEvent) -> {
        if (userName.getText().equals("")) {
            error.setVisible(true);
        }
    });

}

public static void main(String[] args) {

    SwingUtilities.invokeLater(new Runnable() {
        public void run() {
            JTextFiledDemo tf = new JTextFiledDemo();
        }
    });
 }
}
Respuesta 1

He implementado una función de JavaScript dentro del servidor Mongodb usando este ejemplo. Funciona bien cuando uso mongo shell, pero quiero ejecutarlo desde un programa Java. Este es el código: público ...

Estoy usando interceptores cxf personalizados para registrar solicitudes / respuestas para llamadas de servicio y me gustaría registrar el tiempo que tardó la llamada junto con la respuesta. ¿Hay alguna forma de hacer esto?

Tengo un proyecto para que la escuela analice el código web y lo use como una base de datos. Cuando intenté bajar los datos de (https://www.marathonbet.com/en/betting/Football/), ¿no lo obtuve todo? Aquí está mi código: ...

¿Es seguro llamar a escribir en objeto Java FileOutputStream desde múltiples hilos? ¿La salida se serializará correctamente? aclaración: en mi caso, el registrador de clase contiene una referencia FileOutputStream, ...