java – 处理JTextField中的编辑事件
发布时间:2020-05-25 23:51:21 所属栏目:Java 来源:互联网
导读:我有一个登录表单,用户可以输入他的凭据进行登录.我有一个JLabel,用于显示告诉用户用户名不能为空的文本.用户在文本字段为空时单击登录按钮后显示此标签. 我想在用户开始在文本字段中输入的那一刻,带有信息的标签应该消失.我如何实现这种行为? 这是代码: pu
|
我有一个登录表单,用户可以输入他的凭据进行登录.我有一个JLabel,用于显示告诉用户用户名不能为空的文本.用户在文本字段为空时单击登录按钮后显示此标签. 我想在用户开始在文本字段中输入的那一刻,带有信息的标签应该消失.我如何实现这种行为? 这是代码: 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();
}
});
}
}
解决方法为此,您需要在JTextField上使用DocumentListener,此处为 tutorial.例如: userName.getDocument().addDocumentListener(new DocumentListener() {
@Override
public void insertUpdate(DocumentEvent de){
event(de);
}
@Override
public void removeUpdate(DocumentEvent de) {
event(de);
}
@Override
public void changedUpdate(DocumentEvent de){
event(de);
}
private void event(DocumentEvent de){
error.setVisible(de.getDocument().getLength() == 0);
// as mentioned by nIcE cOw better to use Document from parameter
frame.revalidate();
frame.repaint();
}
});
错误必须是最终的(对于低于8版本的java). 同样在开始时,您的字段为空,因此可能需要在错误标签上使用setVisible(true). (编辑:安卓应用网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
