用java做的一个画图程序,可是在最小化后再重新最大化,画得东西却不见了 请问高手这是什么原因,以前看过一本书上好像介绍过,不过翻了半天也没找到那本书,只好求教各位了 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 你执行绘画的代码写在哪了?要放在paint方法里。 所有的绘图操作都要在paint方法的调用下执行(这样屏幕的每次刷新都将自动paint),不能通过别的途径执行 最小化后最大化,会paint界面。如果你的方法没在paint中调用,会被刷掉 是的我也经常遇到这个问题....最近才发现解决办法...用双缓冲技术...可以良好的解决这个问题..并且不屏闪下面是一个使用双缓冲的applet程序的简单代码// 程序:使用双缓冲区// 范例文件:UseDoubleBuffering.javaimport java.awt.*;import java.applet.*;public class UseDoubleBuffering extends Applet implements Runnable{ int X,Y,moveX,moveY,width,height; Thread newThread; Image OffScreen; Graphics drawOffScreen; public void init() { X = 0; Y = 0; moveX = 2; moveY = 3; width = getSize().width; height = getSize().height; OffScreen = createImage(width,height); drawOffScreen = OffScreen.getGraphics(); } public void start() { newThread = new Thread(this); newThread.start(); } public void stop() { newThread = null; } public void paint(Graphics g) { drawOffScreen.setColor(Color.black); drawOffScreen.fillRect(0,0,width,height); drawOffScreen.setColor(Color.white); drawOffScreen.fillOval(X,Y,30,30); g.drawImage(OffScreen,0,0,this); } public void update(Graphics g) { paint(g); } public void run() { while(newThread != null) { repaint(); try { Thread.sleep(50); } catch(InterruptedException E){ } X = X + moveX; Y = Y + moveY; if(X >= (width - 30)) { X = width - 30; moveX = -moveX; } if(X <= 0) { X = 0; moveX = -moveX; } if(Y >= (height - 30)) { Y = height - 30; moveY = -moveY; } if(Y <= 0) { Y = 0; moveY = -moveY; } } }} 新手求助JAVA编译的问题 日历类插入时间日期的问题,月份比实际少一个月 从数据库里面导出某一些字段 看看这道题目,测验一下你的基本功。 JAVA新手提问 日常积累分享:关于Html嵌入打成jar包的Applet方法 小弟打算学JAVA,请高手指教:选何种工具?推荐一本入门书籍 这个注释有什么特别之处? 高分求助 :怎么保存图像? 在线等候!!!!!!! sql问题,急。 基础问题 一个JAVA基础问题
要放在paint方法里。
如果你的方法没在paint中调用,会被刷掉
// 范例文件:UseDoubleBuffering.javaimport java.awt.*;
import java.applet.*;public class UseDoubleBuffering extends Applet implements Runnable
{
int X,Y,moveX,moveY,width,height;
Thread newThread; Image OffScreen;
Graphics drawOffScreen; public void init()
{
X = 0;
Y = 0;
moveX = 2;
moveY = 3;
width = getSize().width;
height = getSize().height; OffScreen = createImage(width,height);
drawOffScreen = OffScreen.getGraphics();
} public void start()
{
newThread = new Thread(this);
newThread.start();
} public void stop()
{
newThread = null;
} public void paint(Graphics g)
{ drawOffScreen.setColor(Color.black);
drawOffScreen.fillRect(0,0,width,height); drawOffScreen.setColor(Color.white);
drawOffScreen.fillOval(X,Y,30,30); g.drawImage(OffScreen,0,0,this);
} public void update(Graphics g)
{
paint(g);
} public void run()
{
while(newThread != null)
{
repaint(); try
{
Thread.sleep(50);
}
catch(InterruptedException E){ }
X = X + moveX;
Y = Y + moveY;
if(X >= (width - 30))
{
X = width - 30;
moveX = -moveX;
}
if(X <= 0)
{
X = 0;
moveX = -moveX;
}
if(Y >= (height - 30))
{
Y = height - 30;
moveY = -moveY;
}
if(Y <= 0)
{
Y = 0;
moveY = -moveY;
}
}
}
}