zoukankan      html  css  js  c++  java
  • PropertyChangeSupport

     1

    import java.beans.PropertyChangeListener;
    import java.beans.PropertyChangeSupport;
    
    /**
     * @author huhy
     * 
     */
    public class MyBean {
    
        private String id;
        private String name;
    
        private PropertyChangeSupport changeSupport = new PropertyChangeSupport(
                this);
    
        public MyBean(String id, String name) {
            this.id = id;
            this.name = name;
        }
    
        public String getId() {
            return id;
        }
    
        public void setId(String id) {
            String oldId = this.id;
            this.id = id;
            changeSupport.firePropertyChange("id", oldId, id);
        }
    
        public String getName() {
            return name;
        }
    
        public void setName(String name) {
            String oldName = this.name;
            this.name = name;
            changeSupport.firePropertyChange("name", oldName, name);
        }
    
        public void addPropertyChangeListener(PropertyChangeListener listener) {
            changeSupport.addPropertyChangeListener(listener);
        }
    
        public void removePropertyChangeListener(PropertyChangeListener listener) {
            changeSupport.removePropertyChangeListener(listener);
        }
    }

    2

    import java.awt.GridLayout;
    import java.beans.PropertyChangeEvent;
    import java.beans.PropertyChangeListener;
    
    import javax.swing.BorderFactory;
    import javax.swing.JLabel;
    import javax.swing.JPanel;
    import javax.swing.JTextField;
    
    public class Panel1 extends JPanel implements PropertyChangeListener {
        private static final long serialVersionUID = 1L;
    
        private MyBean mybean;
    
        private JLabel nameLabel = new JLabel("name1");
    
        private JTextField nameInput = new JTextField();;
    
        private JLabel idLabel = new JLabel("id1");
    
        private JTextField idInput = new JTextField();
    
        public Panel1(MyBean mybean) {
            this.mybean = mybean;
            mybean.addPropertyChangeListener(this);
            initialized();
        }
    
        private void initialized() {
    
            setBorder(BorderFactory.createTitledBorder("输出1"));
            setLayout(new GridLayout(2, 2));
            idInput.setText(mybean.getId());
            nameInput.setText(mybean.getName());
            add(idLabel);
            add(idInput);
            add(nameLabel);
            add(nameInput);
    
        }
    
        @Override
        public void propertyChange(PropertyChangeEvent evt) {
            if (evt.getSource() == mybean) {
                idInput.setText(mybean.getId());
                nameInput.setText(mybean.getName());
            }
    
        }
    }

    3

    import java.awt.GridLayout;
    import java.beans.PropertyChangeEvent;
    import java.beans.PropertyChangeListener;
    
    import javax.swing.BorderFactory;
    import javax.swing.JLabel;
    import javax.swing.JPanel;
    import javax.swing.JTextField;
    
    public class Panel2 extends JPanel implements PropertyChangeListener {
        private static final long serialVersionUID = 1L;
    
        private MyBean mybean;
    
        private JLabel nameLabel = new JLabel("name2");
    
        private JTextField nameInput = new JTextField();;
    
        private JLabel idLabel = new JLabel("id2");
    
        private JTextField idInput = new JTextField();
    
        public Panel2(MyBean mybean) {
            this.mybean = mybean;
            mybean.addPropertyChangeListener(this);
            initialized();
        }
    
        private void initialized() {
            setBorder(BorderFactory.createTitledBorder("输出2"));
            setLayout(new GridLayout(2, 2));
            idInput.setText(mybean.getId());
            nameInput.setText(mybean.getName());
            add(idLabel);
            add(idInput);
            add(nameLabel);
            add(nameInput);
    
        }
    
        @Override
        public void propertyChange(PropertyChangeEvent evt) {
            if (evt.getSource() == mybean) {
                idInput.setText(mybean.getId());
                nameInput.setText(mybean.getName());
            }
    
        }
    }

    4

    import java.awt.BorderLayout;
    import java.awt.Dimension;
    import java.awt.GridLayout;
    import java.awt.event.ActionEvent;
    import java.awt.event.ActionListener;
    
    import javax.swing.BorderFactory;
    import javax.swing.JButton;
    import javax.swing.JFrame;
    import javax.swing.JPanel;
    import javax.swing.JTextField;
    
    /**
     * @author huhy
     * 
     */
    public class PropertyChangeSupportTest extends JFrame {
        private MyBean mybean = new MyBean("123", "helloKitty");
    
        private JPanel panel = new JPanel(new GridLayout(1, 3));
    
        private JTextField id = new JTextField();
        private JTextField name = new JTextField();
    
        private JButton button = new JButton("click");
    
        public PropertyChangeSupportTest() {
            initialized();
            setLayout(new BorderLayout());
            panel.setBorder(BorderFactory.createTitledBorder("输入"));
            add(panel, BorderLayout.NORTH);
            JPanel panel1 = new Panel1(mybean);
            panel1.setPreferredSize(new Dimension(50, 80));
            JPanel panel2 = new Panel2(mybean);
            panel2.setPreferredSize(new Dimension(50, 100));
            add(panel1, BorderLayout.CENTER);
            add(panel2, BorderLayout.SOUTH);
            setSize(300, 300);
            setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
            setVisible(true);
        }
    
        private void initialized() {
            id.setText(mybean.getId());
            name.setText(mybean.getName());
            button.addActionListener(new ActionListener() {
    
                @Override
                public void actionPerformed(ActionEvent e) {
                    mybean.setId(id.getText());
                    mybean.setName(name.getText());
    
                }
    
            });
            panel.add(id);
            panel.add(name);
            panel.add(button);
    
        }
    
        public static void main(String args[]) {
            PropertyChangeSupportTest test = new PropertyChangeSupportTest();
    
        }
    
    }
  • 相关阅读:
    正则表达式积累
    Windows界面编程第七篇 文件拖拽(文件拖放)
    设置 Eclipse 智能代码提示,大幅度减少 alt+/ 使用频率,打每个字都出现代码提示的办法
    CodeFx:一站式微软开发技术解决方案 .
    JS添加可信站点、修改ActiveX安全设置,禁用弹出窗口阻止程序的方法
    Eclipse支持HTML&JS&ExtJS&jQuery代码智能提示
    如何在Web上判断是否已经安装了某个ActiveX控件
    去掉Eclipses的鼠标悬浮提示和增加输代码提示
    在jsp页面下, 让eclipse完全支持HTML/JS/CSS智能提示
    Java集合类ArrayList循环中删除特定元素
  • 原文地址:https://www.cnblogs.com/happyPawpaw/p/3213883.html
Copyright © 2011-2022 走看看