java - Swing 中的输入验证

标签 java swing

我已经用 6 个 jTextFields 制作了 swing 表单。用户应该只能在每个文本字段中输入 1 到 48 之间的数字。还应该检查是否有任何数字重复,并且应用程序应该检查是否有任何字段留空。

我知道如何在 VB.net 中执行此操作,但总的来说我对 java 很陌生。

在 VB.net 中,我会将所有文本字段放入数组中,然后检查是否所有文本字段都已填写、数字是否在范围内,并检查任何字段中是否存在重复数字。如果满足所有条件,我将继续将输入发送到数据库。

我对java相当陌生,所以如果有人可以帮助我或为我指明正确的方向,那就太好了。

最佳答案

有多种方法可以实现这一目标,具体取决于您想要如何实现它......

你可以...

使用 JFormattedTextField ,这将在字段被操作或焦点丢失时验证用户输入,丢弃它认为的无效输入。

这对于最常见格式的后期验证很有用,但缺乏一些灵 active ......

你可以...

使用 JSpinner ,这将在字段被操作或焦点丢失后验证用户输入。当您希望允许用户在值之间快速移动而无需实际键入内容时,这非常有用(向上或向下单击可以更轻松地选择字段、向右移动、删除最后一个字符并将值增加 1) ...例如:P)

你可以...

使用 InputVerifier执行您自己的验证并根据您的需求采取适当的步骤。

从技术上讲,您可以将其与其他解决方案一起使用,但它可能会影响 JFormattedFieldJSpinner 的工作方式,因此请小心。

这使您能够定义实际规则,用于在字段被操作或焦点丢失时对其进行后验证。它还允许您决定当字段无效时焦点横向应如何工作,从而允许将焦点保持在该字段上,直到该值有效(如果您愿意)。

您也可以在此处显示错误消息...

你可以...

使用 DocumentFilter ,这将允许您在用户输入时对输入进行实时验证,实时丢弃无效字符。

这是最复杂的解决方案之一,但也可能是最有用的解决方案之一。

示例请参见MDP's blog (已存档)。

关于java - Swing 中的输入验证,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22386693/

相关文章:

java - Android中的字节数据类型内存大小

java - 在 Spring MVC 中使用域对象作为表单支持对象是一种不好的做法吗?

java - 如何根据行中的某些文本删除 JTable 中的行

java - CardLayout gui错误eclipse

java - HttpServerRequest : request is handled several times

java - Kafka 到 S3 - 如何将切片从 kafka 加载到 S3

java - 如何使用dom解析器java解析xml中的相同名称标签?

java - 如何删除netbeans中java类中未使用的属性

java - Swing 上的 EDT(傻瓜版)

java - 图像 block 的缓冲图像