当前位置: 首页 > 面试题库 >

启用Jbutton之前要填充多个Jtextfield

公孙和怡
2023-03-14
问题内容

嗨,我非常需要一些帮助,我已经在jbutton启用之前搜索了有关要填充的Jtextfield的文档,大多数人都使用DocumentListener来确定是否填充了Jtextfield。我尝试了DocumentListener,它可以工作,但是我想要的是所有Jtextfield都不能为空,然后Jbutton启用,这是我的代码

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

        @Override
        public void insertUpdate(DocumentEvent e) {
            change();
        }

        @Override
        public void removeUpdate(DocumentEvent e) {
            change();
        }

        @Override
        public void changedUpdate(DocumentEvent e) {
            change();
        }

        private void change(){

            if (Ftext.getText().equals("") && Mtext.getText().equals("") && Ltext.getText().equals("") && Addtext.getText().equals("")) {
                SaveButton.setEnabled(false);
            } else {
                SaveButton.setEnabled(true);
            }
           }
    });

问题答案:

if (Ftext.getText().equals("") && Mtext.getText().equals("") && Ltext.getText().equals("") && Addtext.getText().equals(""))

表示所有字段必须为空。有时您需要大声朗读此逻辑…

“如果字段为空AND字段为空AND字段为空…”

如果您改用||(或),则意味着如果其中任何一个字段为空,则该语句true例如为…

if (Ftext.getText().equals("") || 
    Mtext.getText().equals("") ||
    Ltext.getText().equals("") ||
    Addtext.getText().equals("")) {...

您还应该考虑使用,.getText().isEmpty()或者.getText().trim().isEmpty()如果字段不应该仅包含空格。

您可能还考虑编写单个DocumentListener实现,而不是为每个字段创建一个新的匿名类。

public class FieldValidationHandler implements DocumentListener() {

    private List<JTextField> monitorFields;

    public FieldValidationHandler(JTextField... fields) {
        monitorFields = Arrays.asList(fields);
        for (JTextField field : monitorFields) {
            field.getDocument().addDocumentListener(this);
        }
    }

    @Override
    public void insertUpdate(DocumentEvent e) {
        change();
    }

    @Override
    public void removeUpdate(DocumentEvent e) {
        change();
    }

    @Override
    public void changedUpdate(DocumentEvent e) {
        change();
    }

    private void change(){

        boolean enabled = true;
        for (JTextField field : monitorFields) {
            if (field.getText().trim().isEmpty()) {
                enabled = false;
                break;
            }
        }
        SaveButton.setEnabled(enabled);
    }
}

然后,您只需创建一个实例…

FieldValidationHandler handler = new FieldValidationHandler(Ftext, Mtext, Ltext, Addtext);

现在,这种方法有点偷偷摸摸,因为它会DocumentListener自动将添加到您通过构造函数指定的字段中。

另一种方法可能是拥有某种“ Validation”控制器,您将其传递给此处理程序,并且在调用该方法时它将调用某种“ validate”方法change

这会将侦听器与字段分开,但这在当时只是一个上下文问题。

我个人将拥有一个“注册”和“注销”过程,该过程将使您可以根据需要添加或删除字段



 类似资料:
  • 问题内容: 只是一个简单的查询,例如在模型中使用双引用。 模式/模型 询问 我已经尝试过类似的东西 实际上,只有人口之一在工作。 那么,如何让两个人口工作呢? 问题答案: 您已经在使用以下正确的语法: 也许订单中的ObjectId不在集合中?

  • 问题内容: 我尝试用ImageIcon完全填充Jbutton的“表面”。 如您所见,“ Exit”标签的边缘与按钮的边缘之间仍然存在一些空间。您可以 在背景上看到带有白色蓝色填充的按钮。我想要的是用标签完全覆盖此按钮。 有没有办法做到这一点? Here is my code: 问题答案: 您需要将边框设置为,EmptyBorder以便按钮内没有填充。 add this:

  • 问题内容: 这个问题是我上一个问题的延续。无需赘述,我将用2个相关的一对多表填充数据集。所以,我现在的问题是-为什么这段代码能正常工作 这不是 在第二个示例之后,我仅填写了result.t0_DataAgency_R表,但没有填写result.t01_ChoiceParam_R。为什么会这样呢? 提前致谢 问题答案: 自动将阅读器移至下一个结果。因此,您应该删除对的显式调用。 意义:

  • 在Sketch中,每个图层最多可以有4个填充,你可以轻松地将一个半透明的渐变叠加在一个单色填充上面。具体做法是,点击位于第一个颜色填充后面的+按钮来添加第二个填充。你可以来回拖拽它们以重新排列顺序,或者将其拖拽到面板之外来删除它。 想要改变单个填充的颜色属性,点击相应的颜色填充按钮,然后可以修改颜色,也可以切换到渐变填充或图案填充。你可以通过点击每一个填充上面的复选框来禁用单个填充。 为一个图层添

  • 我目前正在android手机上开发一款简单的mp3播放器作为应用程序。我正在查看sd卡和内部存储器上的所有文件,找到所有扩展名为“.mp3”的文件。 简单又好用。 然后我填写一个列表,列出所有产生的歌曲名称,点击后,它们开始播放。工作也很好,但是 我现在在我的个人手机上尝试了这一点,上面有700首歌曲,列表在不到一秒钟的时间内完成,但现在列表将用结果填充foreach循环中的ScrollView。

  • 我可以在Google地图中绘制多边形。现在,当我在地图上绘制完该区域的多边形时,我想用相同的图标填充该多边形。我可以用颜色填充多边形,但我想用边框有一些填充和图标之间有一些指定空间的图标填充它。我该怎么做?