0

我想验证我的其他JTextField使用InputVerifier方法。我做了什么,我为不同的JTextFieldusing设置了一个名称setName

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
}
}

正如您在此处看到的,我正在尝试验证或检查nameString 是否等于,"tfAddress"但不幸的是它不满足条件。任何帮助或提示我该如何解决这个问题?

4

2 回答 2

0

在你的代码中,这个语句if(text.equals("") && name.equals("tfAddress"))永远不会满足,因为if(text.trim().length() == 0 || text.equals(""))检查,所以text.equals("")永远不会返回 true,所以name.equals("tfAddress")会跳过。

在第一次检查if子句中如果文本为空,则代码将返回。所以在这里if(text.equals("") && name.equals("tfAddress"))你可以检查if(name.equals("tfAddress"))

于 2016-09-27T07:56:30.507 回答
0

我刚刚解决了这个问题。我在逻辑上犯了一个错误。我基于text.trim().length() == 0 || text.equals("")所以当我程序运行它首先检查文本是否为空。我做了什么,我根据setName方法设置了条件。希望这对其他人有所帮助。

private void validateJTextField()
{
    tfLastName.setName("tfLastName");
    tfFirstName.setName("tfFirstName");
    tfMiddleName.setName("tfMiddleName");
    tfNickname.setName("tfNickname");
    tfAddress.setName("tfAddress");
    tfContact.setName("tfContact");
    tfLastName.setInputVerifier(new Validation());
    tfFirstName.setInputVerifier(new Validation());
    tfMiddleName.setInputVerifier(new Validation());
    tfNickname.setInputVerifier(new Validation());
    tfAddress.setInputVerifier(new Validation());
    tfContact.setInputVerifier(new Validation());
}

public class Validation extends InputVerifier
{  
@Override
public boolean verify(JComponent input) 
{
    String text = null;
    String cb = null;
    String name = input.getName();
    if(input instanceof JTextField)
    {
        text = ((JTextField) input).getText();

        if(name.equals("tfLastName") || name.equals("tfFirstName") || name.equals("tfMiddleName") || name.equals("tfNickname"))
        {
            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)
                {

                }
            }
        }
        else if(name.equals("tfAddress"))
        {
            if(text.trim().length() == 0 || text.equals(""))
            {
                JOptionPane.showMessageDialog(null, "Cannot left blank");
                return false;//Return false if the component need to keep focus
            }
        }
}
于 2016-09-27T12:41:24.007 回答