Java 显示多张图片

xunyi001 2011-11-25 09:59:16
如何在Java界面上同时显示多张图片?我用了继承Thread类,结果发现显示时候屏幕很闪,怎么办,有没有更好的办法?或者如何解决这个问题?

public class SolarSystem extends JFrame{

public void lode(){
new PaintThread().start();
}
Image sun = Toolkit.getDefaultToolkit().getImage("image/sun.jpg");
Image earth = Toolkit.getDefaultToolkit().getImage("image/earth.jpg");

public void paint(Graphics g){
g.setColor(Color.blue);
g.drawImage(backGround , 0 , 0 , null);
g.drawImage(sun , 435 , 275 , null);

t = t + Math.PI / 36.5;
t1 = t + Math.PI / 0.1;

g.drawOval(120, 145, 600, 400);
g.drawImage(earth , (int)x ,(int)y, null);
x = 375 + 300 * Math.cos(t);
y = 285 + 200 * Math.sin(t);
}


public static void main(String[] args){
int x_size, y_size; //横纵坐标
x_size = (int) (Toolkit.getDefaultToolkit().getScreenSize().getWidth());
y_size = (int) (Toolkit.getDefaultToolkit().getScreenSize().getHeight());

SolarSystem solarSystem = new SolarSystem();
solarSystem.setSize(900, 800);
solarSystem.setLocation((x_size - 800) / 2, (y_size - 780) / 2);
solarSystem.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
solarSystem.setVisible(true);
//earth.setResizable(false);

solarSystem.lode();
}

private class PaintThread extends Thread{
public void run(){
while(true){
repaint();
try {
Thread.sleep(20);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
}
}
...全文
391 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
huntor 2011-11-26
  • 打赏
  • 举报
回复
继承 JPanel,在 paintComponent方法里绘制。使用 javax.swing.Timer 定时更新。
然后 加到 JFrame里。

继承 JFrame 重写 paint 还是 awt的思路。swing不同了
tnjun123456 2011-11-26
  • 打赏
  • 举报
回复

private Image offScreenImage = null;
protected static final int WIN_WIDTH = 800;
protected static final int WIN_HEIGHT = 600;
@Override
public void update(Graphics g) {
if (offScreenImage == null) {
offScreenImage = this.createImage(WIN_WIDTH, WIN_HEIGHT);
}
Graphics gOffScreen = offScreenImage.getGraphics();
Color c = gOffScreen.getColor();
gOffScreen.setColor(Color.BLACK);
gOffScreen.fillRect(0, 0, WIN_WIDTH, WIN_HEIGHT);
gOffScreen.setColor(c);
paint(gOffScreen);
g.drawImage(offScreenImage, 0, 0, null);
}
xunyi001 2011-11-26
  • 打赏
  • 举报
回复
双缓冲怎么弄,能否解释下
sainer 2011-11-25
  • 打赏
  • 举报
回复
双缓冲啊...

58,453

社区成员

发帖
与我相关
我的任务
社区描述
Java Eclipse
社区管理员
  • Eclipse
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧