Это хороший способ использовать интерфейс PropertyChangeListener?
-
20-12-2019 - |
Вопрос
У меня есть сомнения, связанные с глубоким значением и использованием метода
Например, в классе, который реализует логин GUI (который показывает форму входа в систему) с jbutton у меня есть этот метод, который выполняется, когда пользователь CLIK на моей кнопке:
@Override
public void actionPerformed(ActionEvent e) {
// TODO Auto-generated method stub
System.out.println("Button cliccked");
Main listener = new Main(); // I intantiate a new Main object to have the PropertyChangeListener
this.addPropertyChangeListener(listener); // I add the PropertyChange Listener to this LoginFrame object
/* I fire a PropertyChange: the event start and will be handled by the propper propertyChange() method definied in the
* listener class:
*
* @param "loginButtonClicked"
* */
firePropertyChange("loginResult", false, loginResult);
}
.
Так, когда еще не зарегистрированный пользователь, нажмите на мою кнопку, этот метод выполняется, и он загорелся новый ProficateChange событие.
Мой progertyChange событие взять в себе следующие данные:
-
propertyname Это имя свойства, которое можно было изменено (в моем примере называется
LOCTORRESULT , потому что у меня есть логическая переменная с именем loginresult и значение true, если пользователь может войти в систему при кликке кнопку, ложь в противном случае
-
старое значение - это старое значение свойства, которое можно изменить (в моем примере неверно, потому что если пользователь увидит окна входа в систему, это означает, что он не вошел в систему и loginResul= false
-
Новое значение : В этом случае это содержимое переменных loginresult (true, если пользователь зарегистрирован в системе)
Так что это PropertyChange мероприятие будет перехвачена моим методом
** Если значение Property является в систему, и если новое значение верно, то не отображайте окно входа в систему, но отобразите главное окно приложения **
Это мои рассуждения правильно, и это может быть хорошим способом использования PropertyChangeListener интерфейс?
TNX
Andrea
Решение
Вы можете использовать это так, и он будет работать.Но я думаю, что ваш вопрос больше о семантике, а не просто, работает ли это.Пакет этого интерфейса является java.beans
, который помещает его в контекст бобов.Если вы используете его в контексте бобов, то есть ваш издатель событий является бобовым, тогда я думаю, что «глубокий смысл» интерфейса согласуется с вашим использованием.Javadoc говорит
событие «PropertyChange» прижимается всякий раз, когда фасоль меняет свойство «связанного».
Если вы не думаете, что он хорошо сочетается с бобами, то создайте свой собственный
Другие советы
Нет причин использовать события для реализации вашего использования.Вы чрезвычайно простые вещи.Код должен просто выглядеть следующее:
@Override
public void actionPerformed(ActionEvent e) {
String login = loginTextField.getText();
char[] password = passwordField.getPassword();
boolean loginSuccessful = authenticationService.authenticate(login, password);
if (loginSuccessful) {
Main main = new Main();
main.setVisible(true);
this.setVisible(false);
}
else {
displayErrorMessage("Login failed");
}
}
.