# 명품 자바 에센셜 연습문제 8장(이론)

- Author: @baealex
- Published: 2018-11-03
- Updated: 2018-11-03
- Source: http://blex.me/@baealex/%EB%AA%85%ED%92%88-%EC%9E%90%EB%B0%94-%EC%97%90%EC%84%BC%EC%85%9C-%EC%97%B0%EC%8A%B5%EB%AC%B8%EC%A0%9C-8%EC%9E%A5%EC%9D%B4%EB%A1%A0
- Tags: 자바에센셜

---

<div class="txc-textbox" style="border-style: solid; border-width: 1px; border-color: rgb(254, 254, 184); background-color: rgb(254, 254, 184); padding: 10px;">
<p>문제와 해답은 직접 작성한 것으로 오타가 있을 수도 있으며 해답역시 틀린 부분이 있을 수 있습니다. 틀린 부분에 대한 지적은 적극 수용하도록 하겠습니다. 문제를 먼저 풀어보시고 참고용으로만 봐주시길
        바랍니다.<br/></p>
</div>

#### 연습문제 8장

1. 다음 중에서 스윙 컴포넌트 클래스가 아닌 것은? 
 <span style="color: rgb(255, 0, 0);">① Panel</span> 
 ② JFrame 
 ③ JButton 
 ④
 JLabel

2. 다음 중에서 컴포넌트가 아닌 것은? 
 ① Panel 
 ② JFrame 
 <span style="color: rgb(255, 0, 0);">③ Font</span> 
 ④ JPanel

3. 다음 코드의 빈칸에 스윙 프로그램에 필요한 문을 삽입하라.

```java
import java.awt.*;
import javax.swing.*;
public class MyFrame extends __________ {
    MyFrame() {
        _____________ // 컨텐트팬에 대한 레퍼런스 얻기
        _____________ // 컨텐트팬에 "hello" 버튼 달기
        _____________ // 프레임을 너비 200, 높이 400픽셀로 설정
        setVisible(true);
    }
    public static void main(String [] args) {
        _____________ // MyFrame 생성
    }
}
```

3행: <span style="color: rgb(34, 116, 28);">JFrame</span> 
 5행: <span style="color: rgb(34, 116, 28);">Container c
 = getContentPane();</span> 
 6행: <span style="color: rgb(34, 116, 28);">c.add(new JButton("hello")</span> <span style="color: rgb(34, 116, 28);">);</span> 
 7행: <span style="color: rgb(34, 116, 28);">setSize(200, 400);</span> 
 11행: <span style="color: rgb(34, 116, 28);">new MyFrame();</span>

4. 다음 프로그램을 실행하면 아무것도 출력되지 않는다. 정상적으로 작동하도록 프로그램을 수정하라.

```java
import javax.swing.*;
public class MyFrame extends JFrame {
    MyFrame() {
        setSize(300,300);
        setVisible(true);
    }
    public static void main(String [] args) {
        JFrame mf = new JFrame();
    }
}
```

8행을 다음과 같이 수정: <span style="color: rgb(34, 116, 28);">new MyFrame();</span>

5. 컴포넌트와 컨테이너에 대해 잘못 말한 것은? 
 ① JFrame은 컨테이너다. 
 <span style="color: rgb(255, 0, 0);">② 컨테이너는 다른 컨테이너에 삽입될 수 없다.</span> 
 ③
 배치관리자는 컨테이너에서 컴포넌트의 배치를 담당한다. 
 ④ 컴포넌트나 컨테이너가 화면에 출력되려면 최상위 컨테이너에 포함되어야 한다.

6. 배치 관리자에 대해 잘못 말한 것은? 
 ① 배치관리자는 컨테이너에 포함된 컴포넌트들의 위치와 크기를 설정한다. 
 <span style="color: rgb(255, 0, 0);">② 배치관리자는
 한 컨테이너에 여러 개 존재할 수 있다.</span> 
 ③ 배치관리자가 없는 컨테이너를 만들 수 있다. 
 ④ JPanel은 배치관리자를 가지지만 JButton은 배치관리자를 가지지 않는다.

7. 다음 코드에서 컨텐트팬의 배치관리자를 아래 문항에 주어진 대로 설정하라.

```java
Container c = getComtentPane(); // 컨텐트팬 알아내기
_______________________________________ // 배치관리자 설정
```

(1) 컴포넌트 사이의 수평 수직 간격이 각각 10, 20픽셀, BorderLayout

<span style="color: rgb(34, 116, 28);">c.setLayout(new BorderLayout(10, 20)</span> <span style="color: rgb(34, 116, 28);">);</span>

(2) 컴포넌트 사이의 수평 수직 간격이 각각 10, 20픽셀, 중앙정렬, FlowLayout

<span style="color: rgb(34, 116, 28);">c.setLayout(new FlowLayout(FlowLayout.CENTER, </span> <span style="color: rgb(34, 116, 28);">10,
 20));</span>

(3) 컴포넌트 사이의 수평 수직 간격이 각각 10, 20픽셀, 행수 2, 열수 5의 GridLayout

<span style="color: rgb(34, 116, 28);">c.setLayout(new Grid</span> <span style="color: rgb(34, 116, 28);">Layout(2,
 5, </span> <span style="color: rgb(34, 116, 28);">10, 20));</span>

8. 컴포넌트를 절대 위치에 부착하고자 한다. 주석문을 참고하여 빈칸에 적절한 코드를 삽입하라.

```java
import java.awt.*;
import javax.swing.*;
public class MyFrame extends JFrame {
    MyFrame() {
        __________________________ // 컨텐트팬에 대한 레퍼런스 얻기
        __________________________ // 컨텐트팬의 배치관리자 제거
        JButton b = new JButton("Hello");
        __________________________ // b의 위치를 30, 40으로 설정
        __________________________ // b의 크기를 100x100으로 설정
        __________________________ // 컨텐트팬에 b 삽입
        setSize(300, 300);
        setVisible(true);
    }
    public static void main(String [] args) {
        new MyFrame();
    }
}
```

5행: <span style="color: rgb(34, 116, 28);">Container c = getContentPane();</span> 
 6행: <span style="color: rgb(34, 116, 28);">c.setLayout(null);</span> 
 8행: <span style="color: rgb(34, 116, 28);">b.setLocation(30, 40);</span> 
 9행: <span style="color: rgb(34, 116, 28);">b.setSize(100,
 100);</span> 
 10행: <span style="color: rgb(34, 116, 28);">c.add(b);</span>
