A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

先上代码:
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)的时候就能正常显示了呢?

7 个回复

正序浏览
一起学习一下                  
回复 使用道具 举报
你这个问题提的有意义吗?一般setVisible(true)是放在主函数中的把,你在一个自定义继承frame的类里面就调用setVisible()方法,以后使用这个类定义新对象的时候都不受控制的显示一个窗口出来,使用起来得多麻烦!
回复 使用道具 举报 1 0
支持一下。。。。。
回复 使用道具 举报
awt图形界面相关的东西一直都没碰过。。。
回复 使用道具 举报
我看不太懂,还没到那水平,不过学习的过程中,遇到很多有意思的东东,还是很好玩的,特别是解决的时候。
回复 使用道具 举报
luorenyu 发表于 2015-7-1 21:07
级别还不够,根本看不懂呀

何为你那么多黑马币
回复 使用道具 举报
级别还不够,根本看不懂呀
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马