关于java图形用户界面的增加图像(双缓冲)的问题,请高手指点

[复制链接]
查看11 | 回复1 | 2010-5-17 23:03:28 | 显示全部楼层 |阅读模式
package com.qq.DrawLine;
import java.awt.*;
import java.awt.event.*;
public class DrawLine extends Frame{
Image img;
Graphics g2;
int x1=0;
int y1=0;
int x2=0;
int y2=0;
/**
* Method main
*
*
* @param args
*
*/
public static void main(String[] args) {
// TODO: Add your code here
DrawLine dl = new DrawLine();
dl.setSize(500,500);
dl.setTitle("Test");
dl.setVisible(true);
}

public DrawLine()
{
//Dimension d = getSize();
//img = createImage(d.width,d.height);

//final Graphics g = getGraphics();
addWindowListener(new WindowAdapter()
{
public void windowClosing(WindowEvent e)
{

setVisible(false);

dispose();

System.exit(0);
}
});

addMouseListener(new MouseAdapter()
{
public void mousePressed(MouseEvent e)
{

x1 = e.getX();

y1 = e.getY();


}

public void mouseReleased(MouseEvent e)
{

x2 = e.getX();

y2 = e.getY();

Graphics g = getGraphics();



g.setColor(Color.RED);

g.setFont(new Font(Font.SERIF,Font.ITALIC,32));

g.drawString(x2+","+y2,x2,y2);

g.drawString(x1+","+y1,x1,y1);

g.drawLine(x1,y1,x2,y2);



g2.setColor(Color.RED);

g2.setFont(new Font(Font.SERIF,Font.ITALIC,32));

g2.drawString(x2+","+y2,x2,y2);

g2.drawString(x1+","+y1,x1,y1);

g2.drawLine(x1,y1,x2,y2);
}
});
}
public void paint(Graphics g)
{
if(img!=null)
{
g.drawImage(img,0,0,this);
}
{
Dimension d = getSize();

img = createImage(d.width,d.height);
g2 = img.getGraphics();
}


}
}
请问这个程序有什么问题,为什么实现不了双缓冲,开始曝光后可以把缓冲图片贴上去,但是多曝光几次(例如最小化,全屏等)就把屏幕清空了,为什么,请高手指点

回复

使用道具 举报

千问 | 2010-5-17 23:03:28 | 显示全部楼层
public void paint(Graphics g) {if(img!=null){ g.drawImage(img,0,0,this);} ========================> 这里少了一个else{ Dimension d = getSize();
img = createImage(d.width,d.height); g2 = img.getGraphics(); }
}
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

主题

0

回帖

4882万

积分

论坛元老

Rank: 8Rank: 8

积分
48824836
热门排行