1

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

this.myField.setText("11");

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

this.myField.requestFocus();

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

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

4

2 回答 2

3

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

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

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

正确的使用方法是:

component.requestFocusInWindow()

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

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

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

于 2013-04-30T15:35:31.057 回答
1

您可以设置一个DocumentFilteron myField。你verify()不应该有任何副作用,所以你可以在过滤器中使用它。过滤器将在您调用时应用setText(),或在任何时候Document更改。

于 2013-04-30T12:52:50.253 回答