菜鸟提问,protected void paintComponent(Graphics g)问题

xxzxzx 2005-02-24 11:44:33
import java.awt.*;
import javax.swing.*;
import java.awt.event.*;

public class color1 extends JFrame
{
Color ccc;

JMenuBar jmb = new JMenuBar();
JMenu jm1 = new JMenu("File");
JMenu jm2 = new JMenu("View");
JMenuItem jmi1 = new JMenuItem("Exit");
JRadioButton jmi2 = new JRadioButton("red");
JRadioButton jmi3 = new JRadioButton("green");
JRadioButton jmi4 = new JRadioButton("blue");
ButtonGroup bg = new ButtonGroup();

public color1()
{
this.setJMenuBar(jmb);
jmb.add(jm1);jmb.add(jm2);
jm1.add(jmi1);
jm2.add(jmi2);jm2.add(jmi3);jm2.add(jmi4);
bg.add(jmi2);bg.add(jmi3);bg.add(jmi4);

mypanel myp = new mypanel();
this.getContentPane().add(myp);
this.setSize(400,450);
this.setVisible(true);
}

class mypanel extends JPanel
{
protected void paintComponent(Graphics g)
{
g.drawRect(100,100,200,200);
g.drawLine(100,200,300,200);
g.drawLine(200,100,200,300);
}
}
public static void main(String[] agrs)
{
color1 c = new color1();
c.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
}

写了个头就开始迷茫了,
protected void paintComponent(Graphics g)不是构造函数,为什么程序一启动,它就会去画那个框??请高手帮忙解释一下,谢谢.
...全文
442 2 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
angues1980 2005-02-27
  • 打赏
  • 举报
回复
paintComponent()方法是系统自动调用的,一般在组件构造函数自动调用了以后就调用它来显示组件,还有就是在窗体改变大小或者被遮挡的时候(组件的外形被破坏),所以这个时候系统也自动调用paintComponent()方法来从新画组件。如果要强制从新画的话,自己最好不要调用paintComponent()方法,而是调用repaint()方法来从新画。
xxzxzx 2005-02-26
  • 打赏
  • 举报
回复
没有人帮忙吗,自已顶一下。

62,635

社区成员

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

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