Я хотел проверить мой другой 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"
, но, к сожалению, не выполнил условие. Любая помощь или советы, как я могу это решить?
Какую логику вы хотите достичь с помощью своего кода? Как вы его протестировали, каков был текст контроля? Был ли validateJTextField вызван? Если да, то где и как? –
@LajosArpad Arpad Я просто хочу проверить, равен ли 'JTextFields'' 'tfAddress'', если это правда, он может принимать числовые символы и символы. Да 'validateJTextField' вызывается в конструкторе. – Francisunoxx
Фрэнсис, если вы отлаживаете свой код и переходите к строке, где, по вашему мнению, ваша проблема - это то, что является значением текста и каково значение имени в критическом случае? –