June 2008
M T W T F S S
« May   Feb »
 1
2345678
9101112131415
16171819202122
23242526272829
30  




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:

binding konverter

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

binding konverter változó

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.

3 June 2008 | Uncategorized | Comments

Comments:

You must be logged in to post a comment.