Ich habe ein Login-Formular, wo ein Benutzer seine Anmeldeinformationen eingeben können, um sich anzumelden. Ich habe eine JLabel
, die dazu dient, den Text anzuzeigen, der dem Benutzer sagt, dass der Benutzername nicht leer sein darf. Dieses Label wird angezeigt, nachdem ein Benutzer auf die Anmeldeschaltfläche geklickt hat, wenn das Textfeld leer ist.Bearbeiten von Bearbeitungsereignissen in einem JTextField
Ich möchte, dass in dem Moment, in dem der Benutzer beginnt, in das Textfeld einzugeben, die Beschriftung mit den Informationen verschwinden sollte. Wie erreiche ich dieses Verhalten? Hier
ist der Code:
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();
}
});
}
}
Thought upvoted die Antwort eingereicht hinzufügen können, aber warum 'error' hat für' Java 1.7 und die nachstehend erläuterte Stattdessen endgültig sein, 'Fehler JLabel' sollte Instanz variabel sein Um dies zu vermeiden, ist es "final" –
@nIcEcOw niedriger als 8 Version, in 1.8 kann es nicht endgültig sein. In niedrigeren Versionen muss es endgültig sein, da es sich um eine lokale Variable handelt, oder als Instanzvariable deklariert – alex2410
'final'-Variable wird aus einem bestimmten Grund benötigt, aber nicht für den in diesem Beitrag beschriebenen Zweck. Wenn "Fehler JLabel" die Instanzvariable ist, muss sie nicht als "final" deklariert werden. –