2016-09-27 4 views
0

Я хотел проверить мой другой JTextField с использованием метода InputVerifier. Что я сделал, я установил имя для другого JTextField, используя setName.Метод getName не может проверить 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()); 
} 

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", но, к сожалению, не выполнил условие. Любая помощь или советы, как я могу это решить?

+0

Какую логику вы хотите достичь с помощью своего кода? Как вы его протестировали, каков был текст контроля? Был ли validateJTextField вызван? Если да, то где и как? –

+0

@LajosArpad Arpad Я просто хочу проверить, равен ли 'JTextFields'' 'tfAddress'', если это правда, он может принимать числовые символы и символы. Да 'validateJTextField' вызывается в конструкторе. – Francisunoxx

+0

Фрэнсис, если вы отлаживаете свой код и переходите к строке, где, по вашему мнению, ваша проблема - это то, что является значением текста и каково значение имени в критическом случае? –

ответ

0

Здесь в вы код этого заявления 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"))

+0

Я уже пробовал ваше решение ниже. Что я сделал, я проверяю использование 'if (name.equals (" tfAddress "))', но он дает мне «NullPointerException» в этой строке. – Francisunoxx

+0

Вы можете проверить недействительность, если имя! = Null && name.equals() .... –

+0

Ошибка исчезла. Но в моей логике все еще было первое условие. – Francisunoxx

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 
      } 
     } 
} 
Смежные вопросы