Ho un modulo di accesso in cui un utente può inserire le sue credenziali per accedere. Ho un JLabel
che serve per visualizzare il testo che dice all'utente che il nome utente non può essere vuoto. Questa etichetta viene visualizzata dopo che un utente fa clic sul pulsante di accesso quando il campo di testo è vuoto.Gestione degli eventi di modifica in un JTextField
Voglio che nel momento in cui l'utente inizia a digitare nel campo di testo l'etichetta con le informazioni dovrebbe scomparire. Come posso ottenere questo comportamento?
Ecco il codice:
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();
}
});
}
}
Pensiero upvoted la risposta, ma perché 'error' deve essere finale per' Java 1.7 e below' Invece, 'errore JLabel' dovrebbe essere variabile di istanza , per evitare, essendo 'final' –
@nIcEcOw inferiore alla versione 8, in 1.8 potrebbe non essere definitivo. Nelle versioni inferiori deve essere finale perché è una variabile locale o dichiarata come variabile di istanza – alex2410
La variabile 'final' è necessaria per un motivo, ma non per lo scopo che hai descritto in questo post. Se 'error JLabel' è la variabile di istanza, non è necessario dichiararlo come' final'. –