以编程方式设置文本时,InputVerifier未激活

时间:2013-04-30 12:03:11

标签: java swing validation jtextfield inputverifier

我有一个带有JTextFields的swing应用程序,我将InputVerifiers附加到。我通过setText方法将有效的默认值应用于字段,例如

this.myField.setText("11");

但是,除非将焦点应用于字段,否则public boolean verify(JComponent component)似乎不会被调用。我试图以编程方式请求焦点,但这似乎仍然没有触发InputVerifier,例如。

this.myField.requestFocus();

如何以编程方式设置文本字段文本并启动我的InputVerifier并运行其verify()方法?

我可以在构造之后手动触发InputVerifier,调用verify()并传入组件,但这似乎没必要,因为TextField已经连接到InputVerifier。

2 个答案:

答案 0 :(得分:3)

  

我通过setText方法

将有效的默认值应用于字段

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

  

我试图以编程方式请求重点

使用的正确方法是:

component.requestFocusInWindow()

但是,这仅在请求关注可见GUI上的组件时才有效。

  

哪里可以让您检查所有字段的有效性状态

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

答案 1 :(得分:1)

您可以在myField上设置DocumentFilter。您的verify()不应有任何副作用,因此您可以在过滤器中使用它。当您致电setText()Document更改时,过滤器将会应用。