Java2事件处理模型的解析和注意

/*<pre>伪源代码*/
DemoFlowLayout类先用主main方法调用了类的构造函数,启动进程。
声明了控件变量。
public DemoFlowLayout(){
//set title
setTitle("FlowLayout Demo");
//Create container and layout
Container contentPane=getContentPane();
FlowLayout layout=new FlowLayout();
contentPane.setLayout(layout);
/*类似I/O中聚合关系 用FileInputStream做参数传递给ObjectInputStream后,objectInputStream.readObject();
此处也为contentPane嵌套layout后,contentPane聚合了layout对象,作为一个整体实现
.add controls
*/

//add controls to container
contentPane.add(new JLable("Frahrenheit");
contentPane.add(new JTextField("212",6);
contentPane.add(new JLable("Celsius");
contentPane.add(new JTextField("100",6);
JButton btFtoC=new JButton("F to C");
JButton btCtoF=new JButotn("C to F");
contentPane.add(btFtoC);
contentPane.add(btCtoF);
btFtoC.addActionListener(new FtoCListener());   //解析的地方
btCtoF.addActionListener(new CtoFListener());
addWindowListener(new MyWindowAdapter());
}
private class FtoCListener implements ActionListener{
public void actionPerformed(ActionEvent event){
String inStr=tfFahrenheit.getText().trim();
double f=Double.parseDouble(inStr);
thermo.setFahrenheit(f);
String outStr=Format.justify('l',thermo.getCellsius(),0,2);
tfCelsius.setText(outStr);
}
}
private class MyWindowAdapter extends WindowAdapter{
public void windowClosing(WindowEvent e){
System.exit(1);
}
}

/*对addActionListener 官方文档解释:
在JButton父类的AbstractButton类中,
public void addActionListener(ActionListener l)
Adds an ActionListener to the button.
Parameters:
l - the ActionListener to be added
*/

/*对于ActionListener类只有这个解释:
   actionPerformed(ActionEvent e)
          Invoked when an action occurs.
而其父类解释:public interface EventListener
A tagging interface that all event listener interfaces must extend.
对ActionEvent类:ACTION_PERFORMED 字段
          This event id indicates that a meaningful action occured
也没有得到更多的信息
*/

一、解析重点:
/*    借鉴MFC消息机制,事件发生会传递一些整型的消息标识到父类消息泵中,用宏列表指明处理的函数。
      这里也应该JButton父类的AbstractButton类定义的addActionListener()use-a关联关系 EventListener对象,EventListener 中定义的事件发生触发事件(消息)标识 parameter1,因为EventListener在控件ID里面所以也取得外部类的控件ID parameter2,两参数一起传递给addActionListener()方法,addActionListener()方法利用定义的简单消息泵 指明用相应的actionPerformed方法处理。
*/

二、注意:
actionPerform(ActionEvent e)方法名是不可变的,在里面写好要处理的或给用户交互的信息即可。
windowClosing(WindowEvent e)也是同理。
addWindowListener(myWindowAdapter);不用传递组件ID,因为传递的是当前JFrame或JDialog或者Frame、Dialog类对象的引用ID。
this.setSize(w1,h1);
this.setVisible(true);也是对当前Container类。

你可能感兴趣的:(java)