Cómo crear una propiedad de sólo lectura en javafx

Video: Extra N°8: Celdas de JTable no editables

Aunque en JavaFX una propiedad de sólo lectura tiene menos funcionalidad que una lectura / escritura de la propiedad, en realidad es más complicada de implementar. ¿Por qué? Debido a que internamente - dentro de la clase que contiene la propiedad de sólo lectura - que necesita para ser capaz de leer o escribir el valor de la propiedad. Pero el exterior - es decir, fuera de la clase que define la propiedad de sólo lectura - debe asegurarse de que los usuarios pueden leer pero no escribir el valor de la propiedad.

Video: Como quitar la protección contra escritura (Bien Explicado)

Se podría pensar que omitiendo el método setter sería suficiente para crear una propiedad de sólo lectura. Pero el problema es que, además de los métodos getter y setter, propiedades JavaFX también exponen un método de acceso de propiedad que proporciona acceso directo al propio objeto de propiedad.

El siguiente es un ejemplo de cómo no para crear una propiedad de sólo lectura:

StringProperty firstName = new SimpleStringProperty (esto,"nombre de pila", ") -public getFirstName final String () {return firstName.get () -} pública final StringProperty firstNameProperty () {return} firstName-

Este código es el mismo que el código utilizado para crear una propiedad de lectura / escritura, excepto que se omitió la setFirstName método. Por desgracia, esta definición de propiedad no impide que los usuarios de la clase que define la propiedad de modificación de la propiedad. Para ello, todo tendría que hacer el usuario es acceder a la propiedad y luego llamar a la propiedad de conjunto método directamente.

Video: Tomar control y conceder permisos a Archivos,Carpetas en Windows 7

Por ejemplo, supongamos que esta propiedad es parte de una clase llamada Cliente, una instancia de los cuales está referenciado por la variable de Cust. El siguiente código establecería el valor de la propiedad de sólo lectura:

cust.getFirstName (). set ("Valor falsa") -

Para crear de forma segura una propiedad de sólo lectura, en realidad se debe crear dos copias de la propiedad: una versión de sólo lectura y una versión de lectura / escritura. La única lectura versión estará expuesto al mundo exterior.

Video: Validar campo de texto(JTextField). Solo números o letras en JAVA NETBEANS

La versión de lectura / escritura se usa internamente, dentro de la clase que define la propiedad. A continuación, debe sincronizar estas dos propiedades para que cada vez que el valor de la lectura interna / escribir los cambios de propiedad, el valor de la propiedad externa de sólo lectura se actualiza automáticamente.

Para lograr esto, JavaFX proporciona dos clases adicionales para cada tipo de datos de propiedades: una clase de propiedad de sólo lectura y una clase contenedora de sólo lectura. La clase de propiedad de sólo lectura es la que se comparte con el mundo exterior a través del método de acceso de propiedad. La clase contenedora de sólo lectura es la que utiliza para crear el campo privado se utiliza para hacer referencia a la propiedad dentro del programa.

Aquí está un ejemplo completo que implementa una propiedad de entero de sólo lectura denominada número de cliente en una clase llamada Cliente:

Public class Cliente {ReadOnlyIntegerWrapper CUSTOMERNUMBER = new ReadOnlyIntegerWrapper (esto,"número de cliente", 0) -public última Entero getCustomerNumber () {customerNumber.get () devuelven -} ReadOnlyIntegerProperty public final () customerNumberProperty () {return customerNumber.getReadOnlyProperty () -} // más detalles de clase van aquí}

La clave para entender cómo funciona esto es darse cuenta de que la clase contenedora de sólo lectura es una extensión de la clase de resistencia sencilla que añade sólo un nuevo método: getReadOnlyProperty, que devuelve una copia de sólo lectura de la propiedad simple. Esta copia de sólo lectura se sincroniza automáticamente con la propiedad sencilla, de manera que cada vez que se realiza un cambio en la propiedad sencilla subyacente, el valor de la propiedad de sólo lectura se cambiará también.

Artículos Relacionados