binding property konverziók
El?fordulhat, hogy két objektum különböz? típusú tulajdonságait kell bindelni egymáshoz. Elég hülyén hangzik, de pl.:
Van egy adatbázisom, amibe termékek tulajdonsági vannak, és van egy boolean mez?, ami mondjuk jelzi, hogy az adott termék saját, vagy nem.
Azt szeretném, hogy ha valaki egy jtable-ben kiválasztja a terméket, akkor megváltozzon egy panel háttérszíne. Vagy is, egy bean boolean tulajdonságát kell bind-elni a panel háttérszínéhez, azaz egy color tulajdonsághoz. Ez esetben kell egy boolean -> Color konverter. Lássuk, hogy néz ki.
Delklaráljuk a konvertert:
Converter<Boolean, Color> converter;
Majd hozzuk létre a példányt:
converter = new Converter<Boolean, Color>() {
@Override
public Color convertForward(Boolean isSelected) {
return isSelected ? Color.YELLOW : Color.BLACK;
}
@Override
public Boolean convertReverse(Color arg0) {
return arg0 == Color.YELLOW;
}
};
Ezután lehet bind-elni az objektumokat:
bindingGroup = new BindingGroup();
Binding binding =
Bindings.createAutoBinding(
AutoBinding.UpdateStrategy.READ_WRITE,
jTable, ELProperty.create("${selected}"),
jPanel, BeanProperty.create("background"));
binding.setConverter(converter);
bindingGroup.addBinding(binding);
bindingGroup.bind();
Ha netbeans-t használunk, akkor készítsük el a konvertert, majd a bind panelen be tudjuk állítani az adott bindeléshez. Válasszuk a “custom code” funkciót:

És a mez?be írjuk be a konverter változó nevét:

Ezzel tudjuk rávenni a netbeans-t, hogy a állítsa be az adott binding-hez a mi kis konverterünket.
Érdemes el?re legyártott osztályokat készíteni a konverterek példányosítására. Így ezeket el? lehet venni amikor csak kell.
Comments:
You must be logged in to post a comment.