Вопрос

У меня есть сомнения, связанные с глубоким значением и использованием метода FireindExedPropertychange () , который пожарюсь событие, которое будет перехвачено и обрабатывается на ProcessChange () listener что я объявляю в другом классе.

Например, в классе, который реализует логин 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 событие взять в себе следующие данные:

  1. propertyname Это имя свойства, которое можно было изменено (в моем примере называется LOCTORRESULT , потому что у меня есть логическая переменная с именем loginresult и значение true, если пользователь может войти в систему при кликке кнопку, ложь в противном случае

  2. старое значение - это старое значение свойства, которое можно изменить (в моем примере неверно, потому что если пользователь увидит окна входа в систему, это означает, что он не вошел в систему и loginResul= false

  3. Новое значение : В этом случае это содержимое переменных loginresult (true, если пользователь зарегистрирован в системе)

  4. Так что это PropertyChange мероприятие будет перехвачена моим методом 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");
    }
}
.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top