import javax.swing.*;
import javax.swing.event.*;
import java.beans.*;
public class SwingAdapterExample {
public static void main(String[] args) {
JFrame frame = new JFrame("Swing Adapter Example");
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
MyDataModel dataModel = new MyDataModel();
JTextField textField = new JTextField();
textField.getDocument().addDocumentListener(new DocumentAdapter(textField, "text", dataModel));
dataModel.addPropertyChangeListener(new PropertyChangeListener() {
public void propertyChange(PropertyChangeEvent evt) {
textField.setText(dataModel.getText());
}
});
frame.getContentPane().add(textField);
frame.pack();
frame.setVisible(true);
}
}
class MyDataModel {
private String text;
public String getText() {
return text;
}
public void setText(String text) {
this.text = text;
}
}
class DocumentAdapter implements DocumentListener {
private JComponent component;
private String propertyName;
private Object bean;
public DocumentAdapter(JComponent component, String propertyName, Object bean) {
this.component = component;
this.propertyName = propertyName;
this.bean = bean;
}
public void insertUpdate(DocumentEvent e) {
updateBean();
}
public void removeUpdate(DocumentEvent e) {
updateBean();
}
public void changedUpdate(DocumentEvent e) {
updateBean();
}
private void updateBean() {
try {
BeanUtils.setProperty(bean, propertyName, component.getClass().getMethod("getText").invoke(component));
} catch (Exception ex) {
ex.printStackTrace();
}
}
}
import javafx.beans.property.*;
import javafx.beans.binding.*;
public class JavaFXAdapterExample {
public static void main(String[] args) {
MyDataModel dataModel = new MyDataModel();
TextField textField = new TextField();
textField.textProperty().bindBidirectional(dataModel.textProperty());
dataModel.textProperty().bindBidirectional(textField.textProperty());
dataModel.setText("Hello, World!");
textField.setText("Goodbye, World!");
}
}
class MyDataModel {
private StringProperty text = new SimpleStringProperty();
public final StringProperty textProperty() {
return text;
}
public final void setText(String text) {
this.text.set(text);
}
public final String getText() {
return text.get();
}
}