码迷,mamicode.com
首页 > 编程语言 > 详细

Java程序性能优化之缓冲优化

时间:2018-03-30 01:15:12      阅读:159      评论:0      收藏:0      [点我收藏+]

标签:try   使用   swing   end   package   rap   this   void   程序   

 

 

优化前的代码:

package com;



import javax.swing.*;
import java.awt.*;

/**
 * 使用Eclipse,右键Run As,Java Applet运行
 *         优化前效果:出现画面抖动和白光效果
 * @author 胡金水
 *
 */
public class NoBufferMovingCircle extends JApplet implements Runnable {

    Image screenImage = null;
    Thread thread;
    int x = 5;
    int move = 1;

    public void init(){
        screenImage = createImage(230,160);
    }

    public void start(){
        if(thread == null){
            thread = new Thread(this);
            thread.start();
        }
    }


    @Override
    public void run() {
        try{
            while (true){
                x += move;
                if((x > 105) || (x < 5)){
                    move *= -1;
                }
                repaint();
                Thread.sleep(10);
            }
        }catch (Exception e){

        }
    }

    public void drawCircle(Graphics gc){
        Graphics2D g = (Graphics2D) gc;
        g.setColor(Color.GREEN);
        g.fillRect(0,0,200,100);
        g.setColor(Color.red);
        g.fillOval(x,5,90,90);
    }

    public void paint(Graphics g){
        g.setColor(Color.white);
        g.fillRect(0,0,200,100);
        drawCircle(g);
    }


}

  优化后的代码:

package com;

import java.awt.Color;
import java.awt.Graphics;

/**
 * 使用Java Applet运行
 *         优化后,没有出现画面抖动和白光效果
 * @author 胡金水
 * 
 */
public class BufferMovingCircle extends NoBufferMovingCircle{
    
    Graphics doubleBuffer = null;//缓冲区
    
    public void init() {
        super.init();
        doubleBuffer = screenImage.getGraphics();
    }
    
    public void paint(Graphics g) {//使用缓冲区,优化原有的paint()方法
        doubleBuffer.setColor(Color.white);//先在内存中画图
        doubleBuffer.fillRect(0, 0, 200, 100);
        drawCircle(doubleBuffer);
        g.drawImage(screenImage, 0, 0, this);//将buffer一次性显示出来
    }

}

 

Java程序性能优化之缓冲优化

标签:try   使用   swing   end   package   rap   this   void   程序   

原文地址:https://www.cnblogs.com/hujinshui/p/8673425.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!