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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 梁耀今 中级黑马   /  2013-4-9 16:41  /  2028 人查看  /  3 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 梁耀今 于 2013-4-9 19:09 编辑

class Swing1 extends JFrame
{
public void Swing1()  //有void为什么就什么显示就没有了!没有void就正常显示,这是什么回事啊?
{
  this.setLayout(null);
  JLabel j1 = new JLabel();
  j1.setText("第一个Swing程序");
  j1.setBounds(50,50,400,50);
  this.add(j1);
  this.setBounds(300,250,500,200);
  this.setVisible(true);
}
public static void main(String[] args)
{
  new Swing1();
}
}

评分

参与人数 1技术分 +1 收起 理由
陈丽莉 + 1

查看全部评分

3 个回复

正序浏览
你把构造函数写成普通函数了,构造函数定义时遵循以下准则:
1.函数名称与类名相同。
2.不含返回值类型。
当一个类的对象创建时,构造函数就会被自动调用,在对象的生命周期中,构造函数只会调用一次。
你的程序相当于没有构造函数,在一个类中如果没有定义构造函数,系统会为这个类产生一个默认的构造函数,该函数没有参数,也不做任何事情,所以自然不会显示任何东西

评分

参与人数 1技术分 +1 收起 理由
陈丽莉 + 1

查看全部评分

回复 使用道具 举报
首先因为你写的是Swing1,所以你想写应不是方法而是构造函数的,而构造函数是没有返回类型的并且名称和类名相同,当没有void的是时候你写的就是构造函数的,而当你写的void时候,你这个就不是构造方法的了但是也不是函数(因为命名方式不对),而此时你的主函数中的new Swing1(),调用的时候默认的public Swings1(){}构造方法,所以什么也没有显示,而当你没有写void的时候此时调用的就是这个构造方法(也就是上面写的没有void的时候),所以就有显示的。

评分

参与人数 1技术分 +1 收起 理由
陈丽莉 + 1

查看全部评分

回复 使用道具 举报
有void就不是构造方法了,这时你new Swing1()调用的是public Swing1(){}这个默认的构造方法

评分

参与人数 1技术分 +1 收起 理由
陈丽莉 + 1

查看全部评分

回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马