Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/342.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/31.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 以编程方式设置文本时未激活输入验证程序_Java_Swing_Validation_Jtextfield_Inputverifier - Fatal编程技术网

Java 以编程方式设置文本时未激活输入验证程序

Java 以编程方式设置文本时未激活输入验证程序,java,swing,validation,jtextfield,inputverifier,Java,Swing,Validation,Jtextfield,Inputverifier,我有一个swing应用程序,它带有我附加了InputVerifier的JTextFields。我通过setText方法对字段应用了有效的默认值,例如 this.myField.setText("11"); 但是,除非将焦点应用于字段,否则似乎不会调用公共布尔verifyJComponent组件。我已经尝试通过编程方式请求焦点,但似乎仍然无法启动InputVerifier,例如 this.myField.requestFocus(); 如何以编程方式设置textfield text并启动Inp

我有一个swing应用程序,它带有我附加了InputVerifier的JTextFields。我通过setText方法对字段应用了有效的默认值,例如

this.myField.setText("11");
但是,除非将焦点应用于字段,否则似乎不会调用公共布尔verifyJComponent组件。我已经尝试通过编程方式请求焦点,但似乎仍然无法启动InputVerifier,例如

this.myField.requestFocus();
如何以编程方式设置textfield text并启动InputVerifier并运行其验证方法

我可以在构造InputVerifier后手动启动它,调用Verifie并传入组件,但这似乎真的没有必要,因为TextField已经连接到InputVerifier。

您可以在myField上设置一个。您的验证不应该有任何副作用,因此您可以在过滤器中使用它。当您调用setText或文档发生更改时,将应用此筛选器。

您可以在myField上设置一个。您的验证不应该有任何副作用,因此您可以在过滤器中使用它。当您调用setText或文档发生更改时,将应用此筛选器

我通过setText方法对字段应用了有效的默认值

如果默认值有效,为什么需要调用输入验证器

我试着按程序要求集中注意力

正确的使用方法是:

component.requestFocusInWindow()
但是,这仅在请求关注可见GUI上的组件时有效

哪里有什么东西可以让你检查所有字段的有效性状态

此逻辑应该是Submit按钮的一部分。InputVerifier只应检查字段的数据有效性。提交逻辑检查以确保已输入所有字段的数据

我通过setText方法对字段应用了有效的默认值

如果默认值有效,为什么需要调用输入验证器

我试着按程序要求集中注意力

正确的使用方法是:

component.requestFocusInWindow()
但是,这仅在请求关注可见GUI上的组件时有效

哪里有什么东西可以让你检查所有字段的有效性状态


此逻辑应该是Submit按钮的一部分。InputVerifier只应检查字段的数据有效性。提交逻辑检查以确保已输入所有字段的数据。

InputVerifier默认情况下,如果已实现Swing Actionev ActionListener,则会触发这些事件,通过包含shouldYieldFocus&Verifie,可应用于JTextComponents和JSpinner和JComboBox的派生编辑器,以便更快地发布简短的,可运行的,可编译的我想你是说附加一个动作,该动作将触发并调用输入验证方法?但是什么时候会触发此操作?InputVerifier默认情况下,如果有实现的Swing Actionev ActionListener,通过包含shouldYieldFocus&verify,可以应用于JTextComponents和JSpinner和JComboBox的派生编辑器,以便更快地发布一个简短的、可运行的,可编译我想你是说附加一个动作,它将触发并调用输入验证程序方法?什么时候启动这个操作?我的输入验证器确实有副作用。也许我做错了。他们设置了一个is valid标志,稍后可以查询该标志以确定表单上的所有字段是否有效。他们还根据字段是否通过验证来装饰字段。他们说,这种方法应该没有副作用。很抱歉,这超出了我最初的问题,但不清楚如何让InputVerifier控制表单上的“提交”功能。您可以独立地检查每个字段,但如果该字段放弃焦点,您可以在哪里检查所有字段的有效性状态以确定是否可以提交表单?这就是为什么我创建了自己的类来管理它,我只需要根据请求手动启动验证器。也许DocumentFilter就是答案。如果你不想让用户被困在字段中,你可以只在所有字段都有效时启用提交按钮。您可以在每个字段的shouldYieldFocus和actionPerformed中进行检查。状态框也很有用。不过,我的输入验证程序确实有副作用。也许我做错了。他们设置了一个is valid标志,稍后可以查询该标志以确定表单上的所有字段是否有效。他们还根据字段是否通过验证来装饰字段。他们说,这种方法应该没有副作用。很抱歉,这超出了我最初的问题,但不清楚如何让InputVerifier控制表单上的“提交”功能。您可以独立地检查每个字段,但如果该字段放弃焦点,您可以在哪里检查所有字段的有效性状态以确定是否可以提交表单?这就是为什么我创建了自己的类来管理它,并且
我只需要根据请求手动启动验证器。也许DocumentFilter就是答案。如果你不想让用户被困在字段中,你可以只在所有字段都有效时启用提交按钮。您可以在每个字段的shouldYieldFocus和actionPerformed中进行检查。状态框也很有用。因此,有效性的逻辑在InputVerifier中,但是除了显式调用verifycomponent外,submit按钮的行为如何检查所有字段的有效性?submit按钮不需要验证每个组件,InputVerifier已经这样做了。“提交”按钮需要做的只是确保所有文本字段都包含数据,即文本字段不是空的。但是,如果InputVerifier没有保持焦点,则可能存在需要检查的无效字段。这就是我的问题所在。不,不能因为组件失去焦点就有无效字段。当文本字段失去焦点时,将调用输入验证器。因此,您将在那时验证文本字段。数据可以更改的唯一方式是文本字段再次获得焦点。因此,当它失去焦点时,它将再次被验证。在我的例子中,shouldYieldFocus总是返回true。该字段已验证,但会向上显示焦点。我不想强迫用户停留在现场的行为。是的,如果默认值有效,则不必调用它,但我现在知道,它有一个标志,用于确定在上次验证调用后字段是否“有效”,而上次验证调用未被调用。因此,有效性的逻辑在InputVerifier中,但提交按钮行为如何检查所有字段的有效性,除了显式调用verifycomponent之外?Submit按钮不需要验证每个组件,InputVerifier已经验证了这一点。“提交”按钮需要做的只是确保所有文本字段都包含数据,即文本字段不是空的。但是,如果InputVerifier没有保持焦点,则可能存在需要检查的无效字段。这就是我的问题所在。不,不能因为组件失去焦点就有无效字段。当文本字段失去焦点时,将调用输入验证器。因此,您将在那时验证文本字段。数据可以更改的唯一方式是文本字段再次获得焦点。因此,当它失去焦点时,它将再次被验证。在我的例子中,shouldYieldFocus总是返回true。该字段已验证,但会向上显示焦点。我不想强迫用户停留在现场的行为。是的,如果默认值是有效的,则不必调用它,但我现在知道,它有一个标志,用于确定在上次未调用的验证调用之后字段是否“有效”。