Я создаю приложение MVC для качания, чтобы узнать тонкости графического интерфейса с использованием Swing Framework. Моя версия JDK - 7, и у меня есть простое приложение, содержащее диалоговое окно с текстовым полем для хранения пути к файлу, кнопкой обзора, 2 текстовыми полями для идентификатора пользователя и пароля и 2 кнопками для функций обновления и отмены.Ошибка проверки подлинности DocumentListener в приложении MVC
Нажатие на эти кнопки просто показывает диалоговое окно с сообщением «Обновить» или «Отмена» на нем.
Я планировал использовать DocumentListener для проверки компонентов текстового поля.
В интерфейсе я имею следующий код, чтобы создать 2 текстовых поля:
public JPasswordField getMyPasswordField() {
if(myPasswordField == null)
{
myPasswordField = new JPasswordField();
myPasswordField.setBounds(133, 93, 163, 21);
myPasswordField.getDocument().putProperty("Owner", "myPasswordField");
}
return myPasswordField;
}
public JTextField getMyUserNameField() {
if(myUserNameField== null)
{
myUserNameField = new JTextField();
myUserNameField.setBounds(133, 66, 163, 21);
myUserNameField.getDocument().putProperty("Owner", "myUserNameField");
}
return myUserNameField;
}
В контроллере я использовал следующий код:
myReferenceUI.getMyUserNameField().getDocument().addDocumentListener(this);
myReferenceUI.getMyPasswordField().getDocument().addDocumentListener(this);
И в реализации метода я написал следующее :
public void insertUpdate(DocumentEvent e) {
Object owner = e.getDocument().getProperty("Owner");
changed(owner);
}
@Override
public void removeUpdate(DocumentEvent e) {
Object owner =e.getDocument().getProperty("Owner");
changed(owner);
}
@Override
public void changedUpdate(DocumentEvent e) {
Object owner =e.getDocument().getProperty("Owner");
changed(owner);
}
public void changed(Object e)
{
System.out.println(e.toString());
if( e.toString().equals("myUserNameField"))
{
if(myReferenceUI.getMyUserNameField().getText().equals(""))
{
myReferenceUI.getMyUpdateButton().setEnabled(false);
return ;
}
}
if( e.toString().equals("myPasswordField"))
{
if(myReferenceUI.getMyPasswordField().getText().equals(""))
{
myReferenceUI.getMyUpdateButton().setEnabled(false);
return ;
}
}
myReferenceUI.getMyUpdateButton().setEnabled(true);
}
Мое намерение состояло в том, чтобы включить кнопку обновления, только если 2 текстовых поля для имени пользователя и пароля имеют ненулевые значения.
События прослушивателя должным образом срабатывают, и кнопка обновления отключена в случае нулевой записи в полях имени пользователя/пароля.
Но после ввода любого значения в этих полях, если я нажимаю клавишу «Назад» и стирает текст, кнопка обновления остается отключенной.
Что я могу сделать, чтобы избавиться от этого состояния?
Что вы подразумеваете под нулевой регистрацией? – Sage
@Sage Это означает, что любое из полей имени пользователя и пароля пустое – user2991608