import java.awt.*;
import java.awt.event.*;
import javax.swing.*;public class AppGraphInOut {
public static void main(String[] args){
new AppFrame();
}
}class AppFrame extends JFrame{
JTextField in = new JTextField(10);
JButton btn = new JButton("aa");
JLabel out = new JLabel("aaaa");

public AppFrame(){
setLayout(new FlowLayout());
getContentPane().add(in);
getContentPane().add(btn);
getContentPane().add(out);
btn.addActionListener(new BtnActionAdapter());
setSize(400,100);
setDefaultCloseOperation(DISPOSE_ON_CLOSE);
setVisible(true);

}

class BtnActionAdapter implements ActionListener{
public void actionPerformed(ActionEvent e){
String s = in.getText();
double d = Double.parseDouble(s);
double sq = d*d;
out.setText(d+"的平方是:"+sq);
}
}
}
请问一下,btn.addActionListener(new BtnActionAdapter());里的new BtnActionAdapter()的actionperformed方法是自动执行吗?不需要调用吗?

解决方案 »

  1.   

    对应事件发生的时候会触发对应的方法执行.当你点击按钮的时候会自动调用.但是contentpane采用的默认是flowlayout所以你在添加组件什么的时候需要注意布局.要不如果覆盖的话点都点不到的.
      

  2.   

    楼主可以找一点有关Java事件机制的资料看看,这个问题就理解了,而且对以后编写自己的基于事件的代码很有帮助。