Java 有paintComponent()方法 不执行构造函数?

leapmore 2010-03-21 11:13:20
import javax.swing.JPanel;
import java.awt.Color;
import java.awt.Graphics;
public class DrawPanel extends JPanel{
public DrawPanel()
{
System.out.println("1");
}
public void paintComponent(Graphics g)
{
System.out.println("2");
super.paintComponent(g);
System.out.println("3");
}

}

输出时2323为什么不首先执行构造函数呢
...全文
257 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
bayerfly 2010-03-22
  • 打赏
  • 举报
回复
你是怎么生成对象的?
SS_YI123 2010-03-22
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 leapmore 的回复:]
是重写了超类的方法 但是为什么不首先执行构造函数呢?
[/Quote]

你创建了DrawPanel的实例就先调用了构造方法,然后在显示组件的时候就调用了paintComponent方法,怎么说没有首先执行构造方法呢?最后输出的结果是123啊
lyj1012 2010-03-22
  • 打赏
  • 举报
回复
自己是个新手,个人感觉DrawPanel压根没有被调用过啊。
leapmore 2010-03-22
  • 打赏
  • 举报
回复
HELP 自己顶
leapmore 2010-03-22
  • 打赏
  • 举报
回复
是重写了超类的方法 但是为什么不首先执行构造函数呢?
leapmore 2010-03-22
  • 打赏
  • 举报
回复
import javax.swing.JPanel;
import java.awt.Color;
import java.awt.Graphics;
public class DrawPanel extends JPanel{
public DrawPanel()
{
System.out.println("1");
}
public void paintComponent(Graphics g)
{
System.out.println("2");
super.paintComponent(g);
System.out.println("3");
}

}

生成实例就在main方法啊

public class TsetDraw {
public static void main(String args[])
{
DrawPanel panel=new DrawPanel();
JFrame application=new JFrame();
application.add(panel);
application.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
application.setSize(500,500);
application.setVisible(true);
}
}

能详细解答吗

  • 打赏
  • 举报
回复
他是图形版的main()函数
SS_YI123 2010-03-22
  • 打赏
  • 举报
回复
你创建一个DrawPanel的实例,应该是先执行构造方法的,再执行painComponent的。
leapmore 2010-03-21
  • 打赏
  • 举报
回复
help

62,623

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧