我有一个带有JTextFields的swing应用程序,我将InputVerifiers附加到。我通过setText方法将有效的默认值应用于字段,例如
this.myField.setText("11");
但是,除非将焦点应用于字段,否则public boolean verify(JComponent component)
似乎不会被调用。我试图以编程方式请求焦点,但这似乎仍然没有触发InputVerifier,例如。
this.myField.requestFocus();
如何以编程方式设置文本字段文本并启动我的InputVerifier并运行其verify()方法?
我可以在构造之后手动触发InputVerifier,调用verify()并传入组件,但这似乎没必要,因为TextField已经连接到InputVerifier。
答案 0 :(得分:3)
我通过setText方法
将有效的默认值应用于字段
如果默认值有效,为什么需要调用输入验证程序?
我试图以编程方式请求重点
使用的正确方法是:
component.requestFocusInWindow()
但是,这仅在请求关注可见GUI上的组件时才有效。
哪里可以让您检查所有字段的有效性状态
此逻辑应该是“提交”按钮的一部分。 InputVerifier应仅检查字段的数据有效性。 “提交”逻辑检查以确保已输入所有字段的数据。
答案 1 :(得分:1)
您可以在myField
上设置DocumentFilter
。您的verify()
不应有任何副作用,因此您可以在过滤器中使用它。当您致电setText()
或Document
更改时,过滤器将会应用。