java repaint 速度_问一个JAVA repaint()的问题

packagechapter16;importjava.awt.*;importjava.awt.event.*;importjavax.swing.*;publicclassjava16_11extendsJFrame{publicjava16_11(){add(newMovingMessagePanel("LOVE"));}publi...

package chapter16;

import java.awt.*;

import java.awt.event.*;

import javax.swing.*;

public class java16_11 extends JFrame

{

public java16_11()

{

add(new MovingMessagePanel("LOVE"));

}

public static void main(String[] args)

{

JFrame frame=new java16_11();

frame.setTitle("java16_11");

frame.setSize(800,600);

frame.setLocationRelativeTo(null);

frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

frame.setVisible(true);

}

static class MovingMessagePanel extends JPanel

{

private String message="LOVE";

private int xCoordinate=0;

private int yCoordinate=20;

public MovingMessagePanel(String message)

{

this.message=message;

Timer timer=new Timer(100,new TimerListener());//创建计时器,100ms是周期

timer.start();//启动定时器

}

protected void paintComponent(Graphics g)//显示出string

{

super.paintComponent(g);

if(xCoordinate>getWidth())

{

xCoordinate=0;

}

xCoordinate+=5;

g.setFont(new Font("TimesRoman",Font.PLAIN,24));//应该先进行字体的设定,再对字体进行显示和移动,否则会按照默认的字体格式类显示字体

g.setColor(new Color(100,100,200));

g.drawString(message, xCoordinate, yCoordinate);//怎么改变字体的大小和颜色?

//repaint();

}

class TimerListener implements ActionListener

{

public void actionPerformed(ActionEvent e)

{

repaint();//每次重新绘制时paintComponent会重新绘制一遍,而每一次调用都会改变xCoordinate,这就实现了字符的移动

}

}

}

}

如果把这段代码注释的repaint(),去掉会发现LOVE很快的移动,如果去掉repaing()就会以比较慢的速度移动?可以我已经设置了定时器了啊。

展开

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值