Java-JTextField 验证

标签 java swing

我正在处理添加新用户表单,我必须在验证以下内容后启用“保存”按钮。

1.用户名字段必须包含一些字母(正确或错误的用户名)。

2.密码字段和验证密码字段必须包含一些字母(正确或错误的密码)。

最佳答案

这样的东西可能对你有用。该示例不是独立的。您需要创建表单、主文件等...我只是关注如何在 JTextField 焦点丢失时处理检查以启用“保存”按钮。

1)我们向文本字段添加失去焦点事件,如下所示:

private JTextField getTxtUser() {
    if (txtUser == null) {
        txtUser = new JTextField();
        txtUser.addFocusListener(new java.awt.event.FocusAdapter() {
            @Override
            public void focusLost(java.awt.event.FocusEvent e) {
                getBtnSave().setEnabled(
                    !getTxtUser().getText().isEmpty() &&
                    !getTxtPass().getText().isEmpty());
            }
        });
    }
    return txtUser;
}

private JTextField getTxtPass() {
    if (txtPass == null) {
        txtPass = new JTextField();
        txtPass.addFocusListener(new java.awt.event.FocusAdapter() {
            @Override
            public void focusLost(java.awt.event.FocusEvent e) {
                getBtnSave().setEnabled(
                    !getTxtUser().getText().isEmpty() &&
                    !getTxtPass().getText().isEmpty());
            }
        });
    }
    return txtPass;
}

private JButton getBtnSave() {
    if (btnSave == null) {
        btnSave = new JButton("Save");
        btnSave.setEnabled(false);
    }
}

更好的方法可能是将事件监听器添加到 JTextField 内的周围文档,如下所示:

                txtUser.getDocument().addDocumentListener(new DocumentListener() {

                    @Override
                    public void removeUpdate(DocumentEvent e) {
                getBtnSave().setEnabled(
                    !getTxtUser().getText().isEmpty() &&
                    !getTxtPass().getText().isEmpty());
                    }

                    @Override
                    public void insertUpdate(DocumentEvent e) {
                getBtnSave().setEnabled(
                    !getTxtUser().getText().isEmpty() &&
                    !getTxtPass().getText().isEmpty());
                    }

                    @Override
                    public void changedUpdate(DocumentEvent e) {
                getBtnSave().setEnabled(
                    !getTxtUser().getText().isEmpty() &&
                    !getTxtPass().getText().isEmpty());
                    }
                });

但需要模式代码...

关于Java-JTextField 验证,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35509465/

相关文章:

java - Camel : How to mock a route with two endpoints

Java - 使用 HttpURLConnection 发出 POST 请求并将图像发送到服务器

java - 赋予标签高亮效果——Java SWT

java - 网络安全配置 : Using Network Security Config from resource network_security_config debugBuild: true

java - JPopupMenu 没有显示在屏幕上?

MenuItem/MenuBar 和声音播放器的 Java 退出按钮

java - 在 JUNG 2.0 Java 框架中使用 EditingModalGraphMouse 插件自定义鼠标菜单

java - 影响 JTable 单元格值在文本文件上的更改

java - Java 中的事件处理未按预期工作

java - 使用键盘箭头在网格面板内移动 JButton