| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 546 人关注过本帖
标题:关于双缓冲问题
只看楼主 加入收藏
hjq
Rank: 1
等 级:新手上路
帖 子:41
专家分:0
注 册:2006-11-21
收藏
 问题点数:0 回复次数:3 
关于双缓冲问题

我打算用做一个类似桌面既屏保,很简单的,就是有一个球,碰壁后反弹,不过编程的时候出了问题,
Exception in thread "main" java.lang.NullPointerException
代码如下:
import java.awt.*;
import javax.swing.*;
public class animation extends JFrame implements Runnable
{
Graphics gr;
Image i;
int x=0,y=0,a,b,w,h;
public animation()
{
w=Toolkit.getDefaultToolkit() .getScreenSize().width;
h=Toolkit.getDefaultToolkit() .getScreenSize().height;
i=createImage(w,h) ;
//System.out.println("HI");
gr=i.getGraphics() ; //就是这里出问题, i.getGraphics()这个方法返回一个Graphics类,我觉得
//可能不能实例化这个Graphics类了,
GraphicsDevice gra=GraphicsEnvironment.getLocalGraphicsEnvironment().getDefaultScreenDevice();
gra.setFullScreenWindow(this);
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
this.setVisible(true);
}
public void run()
{
while(true)
{
x=x+a;
y=y+b;
if(x>w)
{
a=-1;
}else if(x<0)
{
a=1;
}else if(y>h)
{
b=-1;
}else if(y<0)
{
b=-1;
}
try{
Thread.sleep(100);
}catch(Exception e)
{}
repaint();
System.out.println("hello");
}
}
public void update(Graphics g)
{
paint(g);
}
public void paint(Graphics g)
{
gr.setColor(Color.black);
gr.drawRect(0,0,w,h);
gr.setColor(Color.BLUE);
gr.drawOval(x,y,w,h);
g.drawImage(i,w,h,this);
}
public static void main(String[] args) {
new Thread(new animation()).start();
}
}

搜索更多相关主题的帖子: 缓冲 
2007-01-14 23:46
千里冰封
Rank: 16Rank: 16Rank: 16Rank: 16
来 自:灌水之王
等 级:版主
威 望:155
帖 子:28477
专家分:59
注 册:2006-2-26
收藏
得分:0 
我以前写过一个模仿屏保的程序,你可以参考一下
http://bbs.bc-cn.net/dispbbs.asp?boardid=8&replyid=220646&id=77199&page=1&skin=0&Star=1

可惜不是你,陪我到最后
2007-01-15 09:25
Eastsun
Rank: 7Rank: 7Rank: 7
等 级:贵宾
威 望:32
帖 子:802
专家分:0
注 册:2006-12-14
收藏
得分:0 
你正真出问题的应该是 i=createImage(w,h) ;

这一句,应为只有JFrame为visible的时候,才能保证createImage方法得到一个非空的image.
所以,这句你应该移到JFrame的paint方法里面去,用下面的方法:

public void paint(Graphics g)
{
if(i==null){ //i没有被初始化,就初始化它
i=createImage(w,h);
...//做一些与i有关的初始化工作
}
...
}

[此贴子已经被作者于2007-1-15 10:14:08编辑过]


My BlogClick Me
2007-01-15 10:12
hjq
Rank: 1
等 级:新手上路
帖 子:41
专家分:0
注 册:2006-11-21
收藏
得分:0 

多谢啦~~~我回去看看


2007-01-15 12:07
快速回复:关于双缓冲问题
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.045780 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved