문제

firedexedPropertyChange () firedexedpropertychange () firedexedpropertychange () 의 사용과 관련이 있습니다. 내가 다른 수업에서 선언하는 것.

예를 들어 로그인 GUI를 구현하는 클래스에서 (로그인 양식을 표시하는 로그인 양식)이 메서드가 내 버튼의 사용자 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);   


}
.

그래서 아직 기록되지 않은 사용자가 내 버튼을 클릭하면이 메서드가 수행되고 새 propertychange 이벤트가 발생합니다.

propertychange 이벤트 다음 정보를 가져옵니다.

  1. propertyName 이 변경 될 수있는 속성의 이름 인 라는 부울 변수가 있기 때문에 loginResult 이라는 이름의 loginResult loginResult 및 값이 CLIKC가 버튼을 누르면 로그인 할 수있는 경우 true입니다. 그렇지 않으면

  2. 이전 값 은 변경할 수있는 속성의 이전 값입니다 (내 예에서는 사용자가 로그인 창이 로그인되지 않았 음을 의미합니다. loginResul= false

  3. 새 값 :이 경우 loginResult 변수의 내용입니다 (사용자가 시스템에 로그인 한 경우 true)

  4. propertychange 이벤트는 이러한 매개 변수를 기반으로 처리하는 propertychange () 메소드 (Listener 클래스에서 선언)에 의해 인터셉트 될 것입니다. 예를 들어 다음과 같은 방법 :

    ** propertyName이 loginResult이고 새 값이 true이면 로그인 창을 다시 표시하지 않고 주 응용 프로그램 창을 표시하지 않습니다 **

    은 그것이 올바른 것입니다. propertychangelistener 인터페이스를 사용하는 좋은 방법 일 수 있습니까?

    tnx

    andrea

도움이 되었습니까?

해결책

그런 식으로 사용할 수 있으며 작동합니다.그러나 나는 당신의 질문이 그것이 작동하는지 여부보다는 의미론에 대해 더 중요하다고 생각합니다.해당 인터페이스의 패키지는 Bean의 컨텍스트에 넣는 java.beans입니다.Beans 컨텍스트에서 사용하는 경우 I.E.E. 귀하의 이벤트 게시자는 콩이며 인터페이스의 "깊은 의미"가 귀하의 사용과 동의한다고 생각합니다.Javadoc은

를 말합니다

bean이 "바인드 된"속성을 변경할 때마다 "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