명품 JAVA Programming 12장 연습문제 정답
명품 JAVA Programming 12장 연습문제 정답
1. ③. 그래픽 기반 프로그래밍과 컴포넌트 기반 프로그래밍은 함께 사용하면 보다 다양한 GUI를 만들 수 있다.
2. ③
3. ③. Graphics로 선을 그릴 때 선의 두께를 조절할 수 없다.
4. ④
5. AWT 컴포넌트와 스윙 컴포넌트가 화면에 그려지는 과정은 매우 다르다. AWT 컴포 넌트의 그리기는 Component 클래스의 paint(), update() 등의 메소드에 의해 지배 받지만, 스윙 컴포넌트의 경우 JComponent에 구현된 paint(), paintComponent(), paintChildren() 등의 메소드에 의해 지배받는다. 그러므로 한 컨테이너에 AWT 컴포넌트와 스윙 컴포넌트가 존재하게 되면 AWT 컴포넌트가 화면에 그려지지 않거 나 이상하게 그려질 가능성이 있다.
6. ①. paintComponent()가 제일 먼저 호출된다.
7.
(1) 이미지를 원본 크기로 (10, 20) 위치에 그리는 코드는 비교적 간단하다.
g.drawImage(img, 10, 20, this);
(2) 패널에서 상, 하, 좌, 우 10픽셀씩 간격을 두고 그 안에 이미지가 모두 보이도록 그리기 위해서는 시작 좌표는 (10, 10)이며, 이미지의 크기는 폭이 10*2만큼 작게, 높이도 10*2만큼 작게 그려야 한다. 그러므로 다음과 같다.
g.drawImage(img, 10, 20, getWidth()-10*2, getHeight()-10*2, this);
8. 원을 수직, 수평으로 사등분하였을 때, 오른쪽 상단의 1/4 부분만 보이도록 하기 위해서는 그 영역을 클리핑 영역으로 지정하여야 한다. 이 클리핑 영역의 시작점은 (getWidth()/2, 0)이고, 크기는 폭은 getWidth()/2이며 높이는 getHeight()/2이 다. 그러므로 답은 다음과 같다.
class MyPanel extends JPanel { public void paintComponent(Graphics g) { super.paintComponent(g); g.setClip(getWidth()/2, 0, getWidth()/2, getHeight()/2); g.fillOval(0, 0, getWidth(), getHeight(), this);// 패널에 꽉 찬 원 그리기 } }
9. ①
10. 컴포넌트의 repaint() 메소드를 호출하면 된다.
'IT > 프로그래밍' 카테고리의 다른 글
명품 JAVA Programming 1장 실습문제 정답 (0) | 2020.12.12 |
---|---|
명품 JAVA Programming 13장 연습문제 정답 (0) | 2020.12.12 |
명품 JAVA Programming 11장 연습문제 정답 (0) | 2020.12.12 |
명품 JAVA Programming 10장 연습문제 정답 (0) | 2020.12.12 |
명품 JAVA Programming 9장 연습문제 정답 (0) | 2020.12.11 |
댓글