class MyBean extends AbstractBean { private String strProperty = ""; // // , . // }
// ...- ... MyBean modelBean = new MyBean(); // ... JTextField textField = new JTextField(); // ... Bindings.createAutoBinding(READ_WRITE, modelBean, BeanProperty.create("strProperty"), textField, BeanProperty.create("text")).bind();
class ComboBoxVal { private int id = 0; private String text = ""; // // , . // }
class MyBean extends AbstractBean { private String stringProperty = "Hello!"; private ComboBoxVal comboProperty = new ComboBoxVal(0, "Item0"); // ...
// ...- ... private List comboBoxData = new ArrayList(); // ... for (int i = 0; i < 10; i++) comboBoxData.add( new ComboBoxVal(i, "Item" + i));
JComboBox comboBox = new JComboBox(); // ... SwingBindings.createJComboBoxBinding( READ, comboBoxData, comboBox).bind();
Bindings.createAutoBinding(READ_WRITE, comboBox, BeanProperty.create("selectedItem"), modelBean, BeanProperty.create("comboProperty")).bind();
class StringValidator extends Validator { private int maxStrLength = 10; // ... // , . // ... public Result validate(String value) { if (value == null || value.length() == 0) return new StringEmptyResult(); if (value.length() > maxStrLength) return new StringTooLong(); return null; } public static class StringEmptyResult extends Result { public StringEmptyResult() { super(0, "Str empty msg"); } } public static class StringTooLong extends Result { public StringTooLong() { super(1, "Str too long msg"); } } }
//...- ... private Binding textBinding; // ... textBinding = Bindings.createAutoBinding( READ_WRITE, modelBean, BeanProperty.create("strProperty"), textField, BeanProperty.create("text")); textBinding.setValidator(validator); textBinding.bind();
textBinding.addBindingListener( new BindingListener(){ public void syncFailed(Binding binding, Binding.SyncFailure failure) { // . } public void synced(Binding binding) { // . } // ...
Source: https://habr.com/ru/post/38211/
All Articles