首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > JAVA > Eclipse开发 >

Java 显示多张图片,该怎么解决

2012-01-24 
Java 显示多张图片如何在Java界面上同时显示多张图片?我用了继承Thread类,结果发现显示时候屏幕很闪,怎么

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

Java code
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();                }            }        }    }}


[解决办法]
双缓冲啊...
[解决办法]

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);
}
[解决办法]
继承 JPanel,在 paintComponent方法里绘制。使用 javax.swing.Timer 定时更新。
然后 加到 JFrame里。

继承 JFrame 重写 paint 还是 awt的思路。swing不同了

热点排行