先上代码:
import java.awt.*;
import java.awt.event.*;
public class exe1 {
public static void main(String args[]){
Frame frame1 = new TestFrame();
Button b = new Button("press this!");
b.addActionListener(new MyMonitor());
frame1.add(b);
}
}
//以下是自己写的frame
class TestFrame extends Frame{
TestFrame(){
setSize(300,300);
setVisible(true);
setLocation(400,400);
setTitle("Cao Ni Ma!");
setVisible(true);
}
}
//下面是监听器
class MyMonitor implements ActionListener{
public void actionPerformed(ActionEvent e){
System.out.println("ahahahaha!");
}
}
我为了练习实现监听器就随便写了一个小程序.
用eclipse编译运行之后发现,我明明在程序中写了frame1.add(b),按钮却不显示在frame中。
后来发现我在TestFrame的构造器中多写了一句setVisible(true)。如果把这一句删掉,就能正常显示了。
求问这是为什么?
为什么构造器中有两个setVisible(true)就不显示button,只有一个setVisible(true)的时候就能正常显示了呢? |
|