2010-12-02 6 views
7

В перегруженной функции для моего JFrame:Дисплей анимированный GIF на JPanel

@Override 
protected void paintComponent(Graphics g) { 

    BufferedImage imagePerson; 
    try { 
     imagePerson = ImageIO.read(new File("errol.gif")); 
    } catch (IOException e) { 
     imagePerson = null; 
    } 

    g.drawImage(imagePerson, i * increment, j * increment - 1, null); 
} 

Как я могу изменить это так анимацию на GIF отображается (без резьбы). Я потратил много часов, пытаясь заставить это работать, но безрезультатно.

+5

Независимо от того, какое решение вы преследуете, вы, вероятно, не хотите, чтобы на самом деле было * погрузка * изображений каждый раз, когда вызывается 'paintComponent'. Этот метод называется ** лотом **. Загрузите их один раз при инициализации и сохраните их в переменной экземпляра вашего класса. –

ответ

5

Для этой цели вы можете использовать ImageIcon. Посмотрите here и here. Если вам нужна анимация на JPanel, просто добавьте JLabelImageIcon) на панель.

+0

Дело в том, что я хочу переместить положение анимированного gif вокруг jpanel с позициями, выполненными в: protected void paintComponent (Graphics g) { – Yawn

+0

и я не вижу способа добавить jlabel в jpanel в этой функции – Yawn

+0

Либо вы перемещаете свой ImageIcon, либо настраиваете таймер, который повторно вызывает перерисовку, и выясняйте, где и какой кадр рисовать в методе paintComponent. – aioobe

Смежные вопросы