자바 그래픽 프로그래밍 이미지가 안읽힙니다 ㅠㅠ

조회수 423회

해당 이미지를 프로젝트 안에 넣어놨는데도 이미지가 실행창에서 안읽힙니다. 소스코드는 책 내용 그대로 적어서 문제가 없는데, 왜이럴까요??

import java.awt.BorderLayout; import java.awt.Graphics; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.awt.image.BufferedImage; import java.io.File; import java.io.IOException; import java.util.Random;

import javax.imageio.ImageIO; import javax.swing.JButton; import javax.swing.JFrame; import javax.swing.JPanel;

public class MyImageFrame extends JFrame implements ActionListener {

private int pieces = 4;
private int totalPieces = pieces * pieces;
private int[] pieceNumber;
private BufferedImage img;

public MyImageFrame() {
    setTitle("Image Draw Test");
    try {
        img = ImageIO.read(new File("puppy.jpg"));
    } catch (IOException e) {
        System.out.println(e.getMessage());
        System.exit(0);
    }
    pieceNumber = new int[totalPieces];
    for (int i=0; i<totalPieces; i++) {
        pieceNumber[i] = i;
    }

    JButton button = new JButton("DIVIDE");
    add(new MyPanel(), BorderLayout.CENTER);
    button.addActionListener(this);
    add(button, BorderLayout.SOUTH);
    setSize(img.getWidth(null), img.getHeight(null));
    setVisible(true);
}

void divide() {
    Random rand = new Random();
    int ri;
    for (int i=0; i<totalPieces; i++) {
        ri = rand.nextInt(totalPieces);
        int tmp = pieceNumber[i];

        pieceNumber[i] = pieceNumber[ri];
        pieceNumber[ri] = tmp;
    }
}

    class MyPanel extends JPanel{
        public void paintComponenet(Graphics g) {
            super.paintComponent(g);
            int pieceWidth = img.getWidth(null) / pieces;
            int pieceHeight = img.getHeight(null) / pieces;
            for (int x=0; x<pieces; x++) {
                int sx = x * pieceWidth;
                for (int y=0; y<pieces; y++) {
                    int sy = y * pieceHeight;
                    int number = pieceNumber[x * pieces + y];
                    int dx = (number / pieces) * pieceWidth;
                    int dy = (number % pieces) * pieceHeight;
                    g.drawImage(img, dx, dy, dx+pieceWidth, dy+pieceHeight, 
                            sx, sy, sx+pieceWidth, sy+pieceHeight, null);
                }
            }
            add(new MyPanel(), BorderLayout.CENTER);
        }
    }


public static void main(String[] args) {
    new MyImageFrame();

}

@Override
public void actionPerformed(ActionEvent e) {
    divide();
    repaint();
}

}

  • (•́ ✖ •̀)
    알 수 없는 사용자

답변을 하려면 로그인이 필요합니다.

프로그래머스 커뮤니티는 개발자들을 위한 Q&A 서비스입니다. 로그인해야 답변을 작성하실 수 있습니다.

(ಠ_ಠ)
(ಠ‿ಠ)