Page 777 - 2
P. 777
pieceNumber[i] = i;
}
// 패널 생성 및 컴포넌트 장착
panel = new MyPanel();
panel.setLayout(new GridLayout(pieces,pieces));
btns = new JButton[totalPieces];
for(int i = 0 ; i< totalPieces; i++)
{
btns[i] = new JButton();
btns[i].addMouseMotionListener(this);
btns[i].addMouseListener(this);
panel.add(btns[i]); // 컴포넌트 장착
if(i < totalPieces-1)
{
btns[i].setOpaque(false);
btns[i].setEnabled(false);
}
}
// 그림 섞기 버튼 생성 및 이벤트 핸들러 장착
divideImageBtn = new JButton( 그림 섞기" ");
divideImageBtn.addActionListener(this);
// 프레임에 컴포넌트 장착
frm.add(panel, "Center");
frm.add(divideImageBtn, "South");
// 프레임 기본 설정
frm.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frm.setTitle( 나의 히어로 아카데미아" "); // 원하는 제목 설정
frm.pack();
frm.setVisible(true);
}
class MyPanel extends JPanel
{
public void paint(Graphics g)
{
super.paint(g);
int pieceWidth = img.getWidth(null) / pieces ;
int pieceHeight = img.getHeight(null) / pieces;
for(int y = 0 ; y<pieces ; y++)
{
int dy = y*pieceHeight;
for(int x = 0; x < pieces ; ++x)
{
int dx = x*pieceWidth;
int number = pieceNumber[y*pieces + x];
int sy = (number/pieces)*pieceHeight;
int sx = (number%pieces)*pieceWidth;
g.drawImage(img, dx, dy, dx+pieceWidth, dy+pieceHeight,
sx, sy, sx+pieceWidth, sy+pieceHeight,
null);
}
}
btns[pressedBtn].setBackground(null); // 이미지 아래에 있는 버튼을 다시
- 777 -