paintComponent为什么会自动执行

zhangzhexin_81 2006-03-15 05:57:44
请大家先看一段代码:
import java.awt.*;
import javax.swing.*;
import java.awt.event.*;
class Font2Panel extends JPanel
{
public void paintComponent(Graphics g)
{
String MyQuote="Happiness is an attitude.";
Font f=new Font("Times New Roman",Font.BOLD+Font.ITALIC,24);
FontMetrics fm=getFontMetrics(f);
g.setFont(f);
int x,y;
x=(getSize().width-fm.stringWidth(MyQuote))/2;
y=(getSize().height-fm.getHeight())/2;
g.drawString(MyQuote,x,y);
}
}
class FontsFrames extends JFrame
{
public FontsFrames()
{
setTitle("test");
setSize(400,250);
Container con=getContentPane();
con.add(new Font2Panel());//请注意这里,实例化了一个Font2Panel类
addWindowListener(new myWinClo());
}
class myWinClo extends WindowAdapter
{
public void windowClosing(WindowEvent e)
{
System.exit(0);
}
}
}
public class Font2Demo {
public static void main(String[] args)
{
new FontsFrames().show();
}

}
请注意上面注释的地方,当一旦实例化了Font2Panel类以后,该类的方法:paintComponent就自动执行了,这是为什么呢?书上不是说实例化一个类的时候只是执行该类的构造函数啊,paintComponent方法明显不是该类的构造函数,为什么也可以在实例化的时候被执行呢?
...全文
234 1 打赏 收藏 转发到动态 举报
写回复
用AI写文章
1 条回复
切换为时间正序
请发表友善的回复…
发表回复
supersunyi 2006-03-15
  • 打赏
  • 举报
回复
paintComponent是jcomponent的方法,你现在是重载了父类的方法,你把paintComponent换个名字就不会运行了,还有paintComponent运行是jcomponent决定的,不管任何类,只要你继承jcomponent,就会执行paintComponent方法[绘制组件]。。。。不知道说什么了,呵呵
资源下载链接为: https://pan.quark.cn/s/3d8e22c21839 Java因跨平台特性受开发者青睐,但有时需将Java程序转为Windows可直接运行的.exe文件,方便非开发人员使用。以“JAVA 打包成exe的动态心表白代码.zip”为例,其展示了将Java程序转化为.exe的过程,尤其是创建动态心形表白效果。Java应用通常在JVM上运行,而.exe是Windows原生可执行文件。要实现Java程序到.exe的转换,可借助第三方工具,如Launch4j、JSmooth、Excelsior Jet等,其中Launch4j因简单易用且功能强大而被选用。 使用Launch4j进行打包,首先需下载安装该工具,它是一个开源的Java可执行头包装饰器。接着准备好Java项目,确保其为可运行的JAR文件,这可通过在IDE(像Eclipse或IntelliJ IDEA)中构建Runnable JAR来实现。然后在Launch4j中进行项目配置,包括输入JAR文件路径、指定主类(程序启动入口)、选择Java版本、设置窗口图标等。还需设置执行参数,如JVM参数和命令行参数,这些在Java程序中可使用。最后点击“Build”生成.exe文件,该文件在双击时自动启动JVM并运行Java程序。 在动态心形表白效果方面,该压缩包中的“love”可能代表实现动态心形动画或文本表白效果。在Java中,可利用图形库(如Java AWT或Swing)绘制图形,并结合定时器组件实现动态效果。例如,创建Canvas或JPanel,重写其paintComponent()方法绘制心形图案,每次重绘时改变位置或颜色实现动态感,再用javax.swing.Timer控制每帧间隔时间,使动画平滑。 不过,Java程序打包为.exe虽便于分发,但用户仍需安装JRE才能执行。为解决此问题,可考虑

62,629

社区成员

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

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