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(); } }


上一篇:
下一篇:
切换中文