JPanel 에서 이동하는 이미지 예
아래의 클래스는 JPanel 을 상속하여 그림을 로드하고 그리는 내용이다.
이 클래스의 인스턴스를 생성하여 JFrame 의 getContentPane().add(panel) 를 사용하면 화면에 그림을 출력할 수 있다
그림을 그릴 때 위치를 매번 변경하기 때문에 이미지가 이동하는 효과를 볼 수 있다
테스트환경: JDK 8, Netbeans 8.0.2
프로젝트가 저장되는 폴더로 이동해서 현재 클래스 소속 패키지 안에 images 폴더를 생성하고 그 안에 smile.jpg 를 복사해두면 된다
package org.kdea.java; import java.awt.Graphics; import java.awt.Graphics2D; import java.awt.image.*; import java.io.IOException; import java.io.InputStream; import java.util.logging.Level; import java.util.logging.Logger; import javax.imageio.ImageIO; import javax.swing.*; public class ImagePanel extends JPanel { BufferedImage img; int x, y; ImagePanel() { this.setBounds(0, 0, 600, 400); InputStream ins = getClass().getResourceAsStream("images/smile.jpg"); try { img = ImageIO.read(ins); } catch (IOException ex) { Logger.getLogger(ImagePanel.class.getName()).log(Level.SEVERE, null, ex); } new Thread() { @Override public void run() { for(int i=0;i<1000;i++) { x++; y++; repaint(); try { Thread.sleep(33); } catch (InterruptedException ex) { ex.printStackTrace(); } } } }.start(); } @Override protected void paintComponent(Graphics g) { super.paintComponent(g); Graphics2D g2d = (Graphics2D) g; g2d.drawImage(img, x,y, null); } }