Метод getName не может проверить JTextField из другого класса

Я хотел проверить мой другой JTextField с помощью InputVerifier метод. Что я сделал, я назначил имя для другого JTextField с помощью 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
}
}

Как вы можете видеть здесь, я пытаюсь подтвердить или проверить, name Строка равна "tfAddress" но, к сожалению, это не будет соответствовать условию. Любая помощь или советы, как я могу решить эту проблему?

2 ответа

Вот в вашем коде это утверждение if(text.equals("") && name.equals("tfAddress")) никогда не будет удовлетворен, из-за if(text.trim().length() == 0 || text.equals("")) проверить, так text.equals("") никогда не вернет истину так name.equals("tfAddress") пропущу

В первой проверке if предложение, если текст пустой, то код вернется. Так вот if(text.equals("") && name.equals("tfAddress")) Вы можете проверить if(name.equals("tfAddress"))

Я только что решил проблему. Я ошибся в логике. Я на основе 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
            }
        }
}
Другие вопросы по тегам