Pregunta

Tengo una duda relacionada con el profundo significado y uso del método FireIdexedPropertyChange () que incendió un evento que será interceptado y manejado por un PropertyChange () oyente que declaro en otra clase.

Por ejemplo, en una clase que implementa una GUI de inicio de sesión (que muestra un formulario de inicio de sesión) con un JButton Tengo este método que se realiza cuando el usuario clik en mi botón:

@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);   


}

Entonces, cuando el usuario aún no ha registrado, haga clic en Mi botón, este método se realiza y enciende un nuevo evento de Cambio .

Mi PropertyChange evento se toma las siguientes informaciones:

  1. El nombre de propiedad que es un nombre de una propiedad que podría cambiarse (en mi ejemplo se llama loginResult porque tengo una variable booleana llamada loginresult y el valor es cierto si el usuario puede iniciar sesión cuando clikc el botón, de otra manera falso

  2. Un valor ultrino es el valor antiguo de la propiedad que podría cambiarse (en mi ejemplo es falso porque si el usuario ve la ventana de inicio de sesión, significa que no está conectado y el loginresul= falso

  3. El nuevo valor : en este caso es el contenido de la variable loginResult (VERDADERO si el usuario se está registrando en el sistema)

  4. Por lo tanto, este evento PROPORTECHANGE será interceptado por mi método PropertyChange () (declarado en una clase de oyente) que lo manejan en función de estos parámetros: por ejemplo, en el siguiente Manera:

    ** Si el Nombre de propiedad es LOINRESULT y, si el nuevo valor es cierto, no se muestre nuevamente la ventana de inicio de sesión, pero visualice la ventana principal de la aplicación **

    ¿Es mi razonamiento correcto y podría ser una buena manera de usar la interfaz PropertyChangelistener ?

    tnx

    andrea

¿Fue útil?

Solución

Puedes usarlo así y funcionará.Pero creo que su pregunta es más sobre la semántica en lugar de solo si funciona.El paquete de esa interfaz es java.beans, lo que lo pone en un contexto de frijoles.Si lo está utilizando en un contexto de frijoles, es decir, su editor de eventos es un frijol, entonces creo que el "significado profundo" de la interfaz está de acuerdo con su uso.El javadoc dice

Un evento de "CAMBIO DE PROPIEDAD" se despidió cada vez que un frijol cambia una propiedad "enlazada".

Si no cree que va bien con los frijoles, entonces cree su propio

Otros consejos

No hay razón para usar eventos para implementar su caso de uso.Estas en exceso de cosas simples.El código simplemente debe parecer lo siguiente:

@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");
    }
}

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top