我已经用 6 个 jTextFields 制作了 swing 表单。用户应该只能在每个文本字段中输入 1 到 48 之间的数字。还应该检查是否有任何数字重复,并且应用程序应该检查是否有任何字段留空。
我知道如何在 VB.net 中执行此操作,但总的来说我对 java 很陌生。
在 VB.net 中,我会将所有文本字段放入数组中,然后检查是否所有文本字段都已填写、数字是否在范围内,并检查任何字段中是否存在重复数字。如果满足所有条件,我将继续将输入发送到数据库。
我对java相当陌生,所以如果有人可以帮助我或为我指明正确的方向,那就太好了。
最佳答案
有多种方法可以实现这一目标,具体取决于您想要如何实现它......
你可以...
使用 JFormattedTextField
,这将在字段被操作或焦点丢失时验证用户输入,丢弃它认为的无效输入。
这对于最常见格式的后期验证很有用,但缺乏一些灵 active ......
你可以...
使用 JSpinner
,这将在字段被操作或焦点丢失后验证用户输入。当您希望允许用户在值之间快速移动而无需实际键入内容时,这非常有用(向上或向下单击可以更轻松地选择字段、向右移动、删除最后一个字符并将值增加 1) ...例如:P)
你可以...
使用 InputVerifier
执行您自己的验证并根据您的需求采取适当的步骤。
从技术上讲,您可以将其与其他解决方案一起使用,但它可能会影响 JFormattedField
和 JSpinner
的工作方式,因此请小心。
这使您能够定义实际规则,用于在字段被操作或焦点丢失时对其进行后验证。它还允许您决定当字段无效时焦点横向应如何工作,从而允许将焦点保持在该字段上,直到该值有效(如果您愿意)。
您也可以在此处显示错误消息...
你可以...
使用 DocumentFilter
,这将允许您在用户输入时对输入进行实时验证,实时丢弃无效字符。
这是最复杂的解决方案之一,但也可能是最有用的解决方案之一。
示例请参见MDP's blog (已存档)。
关于java - Swing 中的输入验证,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22386693/