java bean消息驱动2011-04-02import java.awt.*; import java.awt.event.*; import java.io.Serializable; import javax.swing.*; import java.beans.*; public class Loan extends JPanel implements ActionListener { protected PropertyChangeSupport changes=new PropertyChangeSupport(this); private String loanType=new String("Personal Loan"); public void setLoanType(String temp) { String old=new String(); old=loanType; loanType=temp; changes.firePropertyChange("loanType",old,temp); } public String getLoanType() { return loanType; } JLabel lid,ltype; JTextField tid,ttype; JButton submit; public Loan() { lid=new JLabel("Enter Loan Id:"); tid=new JTextField(8); ltype=new JLabel("Loan Type:"); ttype=new JTextField(15); submit=new JButton("ADD NEW LOAN"); setLayout(new GridLayout(3,2)); add(lid);add(tid); add(ltype);add(ttype); submit.addActionListener(this); add(submit); } public void actionPerformed(ActionEvent evt) { Object obj=evt.getSource(); if(obj== //Loan.java /* This class contains the User Interface that Earnest Bank uses to add new loan types to the database. Whenever a new loan type is added, a property change event is generated */ submit AN>) setLoanType(ttype.getText()); } public void addPropertyChangeListener(PropertyChangeListener l) { changes.addPropertyChangeListener(l); } public void removePropertyChangeListener(PropertyChangeListener l) { changes.removePropertyChangeListener(l); } } //CustomerLoan.java /* The following class is used by Earnest Bank to accept the details of customers who take loans. Whenever a new loan type is added to the database, the loan type should be made available to the user. /* This class traps the property change event generated by the Loan class and adds the new loan type to its loan type combo box. */ import java.awt.*; import javax.swing.*; import java.awt.event.*; import java.beans.*; import java.io.*; public class CustomerLoan implements PropertyChangeListener { static JFrame frameObj; JPanel mp,chp1, Mpane; Loan lp; BoxLayout bl; JLabel lcname,lctype; JTextField tcname; JComboBox tctype; public CustomerLoan() { mp=new JPanel(); chp1=new JPanel(); Mpane=new JPanel(); lp=new Loan(); //bl=new BoxLayout(mp,BoxLayout.Y_AXIS); //bl.addLayoutComponent(new String("Loan Panel"),lp); //bl.addLayoutComponent(new String("Customer Panel"),chp1); Mpane.setLayout(new FlowLayout()); Mpane.add(lp); Mpane.add(chp1); frameObj.getContentPane().add(Mpane);
lcname=new JLabel("Customer Name:"); lctype=new JLabel("Type of Loan taken:"); tcname=new JTextField(6); tctype=new JComboBox(); tctype.addItem(lp.AN>getLoanType()); chp1.setLayout(new GridLayout(2,2)); chp1.add(lcname); chp1.add(tcname); chp1.add(lctype); chp1.add(tctype); lp.addPropertyChangeListener(this); } public void propertyChange(PropertyChangeEvent pcevent) { System.out.println("propertyChange was call"); tctype.addItem(pcevent.getNewValue()); } public static void main(String args[]) { frameObj=new JFrame("Loan Frame"); new CustomerLoan(); frameObj.setSize(400,400); frameObj.setVisible(true); } }