He estado codificando con java y C# durante mucho tiempo y He codificado mis propios PropertyChangeListeners en Java al imitar .net y aquí debajo de mi método.
Para la serialización de este objeto codifiqué filtros especiales contra el serializador, es decir. XStream, serialización de objetos nativos java
Si necesita DIY puede usar mi camino o también puede progresar yendo a través de la infraestructura de Oracle como @Pau Kiat Wee lo vinculó en su respuesta.
echar un vistazo JGoodies para los datos de oscilación de unión para más ya construido en la materia http://www.jgoodies.com/download/presentations/binding.pdf http://www.jgoodies.com/downloads/demos/
Aquí está mi aplicación,
Su objeto de negocio se extenderá de esta clase abstracta.
Claro, si ya se está extendiendo desde otra cosa y esto no es uno de los suyos esta opción es increíblemente útil para usted.
más posiblemente usted no tiene intención de serializar propertyChangeListeners
solicitantes de registro y enviar algunos datos a alguna parte con él (un servicio remoto que no sabe la clase de interfaz de usuario dependiente y esto va a ser dolor de cabeza) .Así, estamos salteando serialización por esta manera.
Tenga en cuenta private void writeObject(java.io.ObjectOutputStream out)
y private void readObject(java.io.ObjectInputStream in)
firmas. Intencionalmente los dejé vacíos y estas significativas firmas de métodos están consideradas por Java Object Serialization
.
Esta es nuestra interfaz imitada PropertyChangeEvent, utilizaremos el patrón de observador para notificar a nuestros registrantes.
public interface IPropertyChangedListener extends EventListener {
public void onPropertyChanged(Object source,String propertyName,Object oldValue,Object newValue);
}
Esta es nuestra base de DataBusinessObject
public abstract class DataObjectBase implements Serializable {
private List<IPropertyChangedListener> propertyChangeListeners=new ArrayList<IPropertyChangedListener>();
public void addOnPropertyChangedListener(IPropertyChangedListener propertyChangeListener)
{
ensureRegisterListCreated();
propertyChangeListeners.add(propertyChangeListener);
}
public void removeOnPropertyChangedListener(IPropertyChangedListener propertyChangeListener)
{
ensureRegisterListCreated();
propertyChangeListeners.remove(propertyChangeListener);
}
public DataObjectBase()
{
ensureRegisterListCreated();
}
public void ensureRegisterListCreated()
{
if(propertyChangeListeners==null)
propertyChangeListeners=new ArrayList<IPropertyChangedListener>();
}
protected void onPropertyChanged(Object source,String propertyName,Object oldValue,Object newValue)
{
if(propertyChangeListeners.size()<=0)
return;
for (IPropertyChangedListener listener : propertyChangeListeners) {
listener.onPropertyChanged(source, propertyName, oldValue, newValue);
}
}
private void writeObject(java.io.ObjectOutputStream out)
throws IOException
{
}
private void readObject(java.io.ObjectInputStream in)
throws IOException {
}
}
Ahora, vamos a usarlo
dataObject.addOnPropertyChangedListener(new IPropertyChangedListener() {
@Override
public void onPropertyChanged(Object source, String propertyName,
Object oldValue, Object newValue) {
System.out.println(String.format("%s %s %s",propertyName,oldValue,newValue));
//TODO:Fire your UI change now !!!
}
});
Esto es lo que hay que hacer en su dataObject
public class dataObject extends BaseDataObject
{
private String editable;
public String getEditable() {
return editable;
}
public void setEditable(String isEditable) {
String oldValue=this.editable;
this.editable = isEditable;
onPropertyChanged(this,"Editable",oldValue,isEditable);
}
}
Si no quieres hacer mi voluntad, o puedes ' t por alguna razón. Deberías seguir a JGoodies, este parece ser el mejor de todos. En demostraciones, descargue el archivo JNLP y usted verá parte de DataBinding. Hay una sección de código cuando haces clic en una flecha que se encuentra en la parte superior derecha. ¡Buena suerte! http://www.jgoodies.com/downloads/demos/
favor y su pregunta (s) es/son aproximadamente ???, por favor enviar un [SSCCE] (http://sscce.org/) Demostrando su (s) problema (s) con Vinculaciones/Enlace de datos – mKorbel
Presenté exactamente lo que estoy haciendo en la lista anterior. No todas las preguntas requieren un SSCCE particularmente uno como este, que no pregunta sobre un problema de código. Me pregunto si la vinculación de datos es posible con Java porque en C# es la forma estándar de hacer la GUI. No encontré ninguna información de enlace de datos java endorsed oficial en google y los resultados de google de la primera página que obtengo para 'Java databinding' contienen cosas como 'java databinding api no listo para el horario estelar' y 'Beans Binding: una solución Java Data-Binding con un problema grave ' –
bien entonces sus respuestas podrían ser fuelles o JSR296 – mKorbel