【发布时间】:2017-02-04 17:51:05
【问题描述】:
我想使用InputVerifier 方法验证我的另一个JTextField。我所做的我使用setName 为不同的JTextField 设置了一个名称。
private void validateJTextField()
{
tfAddress.setName("tfAddress");
tfLastName.setInputVerifier(new Validation());
tfFirstName.setInputVerifier(new Validation());
tfMiddleName.setInputVerifier(new Validation());
tfNickname.setInputVerifier(new Validation());
tfAddress.setInputVerifier(new Validation());
}
验证类
public class Validation extends InputVerifier
{
@Override
public boolean verify(JComponent input)
{
String text = null;
String name = input.getName();
if(input instanceof JTextField)
{
text = ((JTextField) input).getText();
if(text.trim().length() == 0 || text.equals(""))
{
JOptionPane.showMessageDialog(null, "Cannot left blank");
return false;//Return false if the component need to keep focus
}
else
{
try
{
Double.parseDouble(text);
JOptionPane.showMessageDialog(null, "Cannot insert numeric");
return false;
}
catch(NumberFormatException e)
{
}
}
if(text.equals("") && name.equals("tfAddress"))
{
System.out.print("This is tfAddress");
return false;
}
}
return true;//Return true if the component should give up focus
}
}
正如您在此处看到的,我正在尝试验证或检查 name 字符串是否等于 "tfAddress" 但不幸的是它不符合条件。有什么帮助或提示我该如何解决这个问题?
【问题讨论】:
-
你想用你的代码实现什么逻辑?你是如何测试它的,控件的文本是什么?是否调用了 validateJTextField?如果是这样,在哪里以及如何?
-
@LajosArpad Arpad 我只是想验证
JTextFields是否等于"tfAddress",如果它是真的,它可以接受数字和字符。是的validateJTextField在构造函数上被调用。 -
弗朗西斯,如果您调试代码并转到您认为问题在于 text 的值是什么以及在关键情况下 name 的值是什么的那一行?
-
@LajosArpad null 已经消失了。但不能满足我的条件。我不确定
getName()是否获得了正确的 JTextField。 -
弗朗西斯,祝你好运。我将导航到操作员提供足够信息来解决他/她的问题的问题。
标签: java swing validation inputverifier