JAVA中paint函数的作用,paint和repaint函数的区别,一定给分

请教paint()与repaint()方法的区别,是否可以自己写一个方法代替paint()或repaint()?我在panel上画了一个图,但移动panel后,图就不见了,why?how to resolve?

|

Applet子类完全正常

JApplet的子类要在paint方法中先调用父类的paint

以下Applet运行正常

import java.awt.*;

import java.applet.*;

public class Applet1 extends Applet

{

public void init()

{

setLayout(null);

setSize(426,266);

button1.setLabel("draw");

add(button1);

button1.setBackground(java.awt.Color.lightGray);

button1.setBounds(252,48,112,47);

SymAction lSymAction = new SymAction();

button1.addActionListener(lSymAction);

}

java.awt.Button button1 = new java.awt.Button();

class SymAction implements java.awt.event.ActionListener

{

public void actionPerformed(java.awt.event.ActionEvent event)

{

Object object = event.getSource();

if (object == button1)

button1_ActionPerformed(event);

}

}

void button1_ActionPerformed(java.awt.event.ActionEvent event)

{

repaint();

}

public void paint(Graphics g){

g.drawRect(20, 20, 100, 100);

}

}

//

以下JApplet运行正常

import java.awt.*;

import javax.swing.*;

/**

* A basic extension of the javax.swing.JApplet class

*/

public class JApplet1 extends JApplet

{

public void init()

{

getContentPane().setLayout(null);

setSize(426,266);

JButton1.setText("draw");

getContentPane().add(JButton1);

JButton1.setBounds(300,108,71,46);

//}}

//{{REGISTER_LISTENERS

SymAction lSymAction = new SymAction();

JButton1.addActionListener(lSymAction);

//}}

}

//{{DECLARE_CONTROLS

javax.swing.JButton JButton1 = new javax.swing.JButton();

//}}

class SymAction implements java.awt.event.ActionListener

{

public void actionPerformed(java.awt.event.ActionEvent event)

{

Object object = event.getSource();

if (object == JButton1)

JButton1_actionPerformed(event);

}

}

void JButton1_actionPerformed(java.awt.event.ActionEvent event)

{

repaint();

}

public void paint(Graphics g){

super.paint(g);

g.drawRect(20, 20, 100, 100);

}

}

|

repaint()方法会执行:update()方法,先刷新屏幕(以背景填充),在调用

paint()方法重画。

一般可以重载update()和paint()方法。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值