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

- Author: @baealex
- Published: 2018-11-21
- Updated: 2018-11-21
- 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-10%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>

#### 연습문제 10장

1. 다음 중 스윙 패키지에 속하지 않는 클래스는 무엇인가? 
 ① JComponent 
 <span style="color: rgb(255, 0, 0);">② Container</span> 
 ③
 JButton 
 ④ JMenu

2. Item 이벤트가 발생하는 경우에 해당하지 않은 것은? 
 ① 해체되어 있는 상태의 체크박스를 클릭하여 선택 상태로 변경한 경우 
 ② 선택 상태 체크박스를 클릭한 경우 
 ③ 새로운
 라디오 버튼을 클릭한 경우 
 <span style="color: rgb(255, 0, 0);">④ JTextField에 &lt;Enter</span> <span style="color: rgb(255, 0, 0);">&gt;키를
 입력한 경우<br/><span style="color: rgb(47, 157, 39);">액션 이벤트가 발생한다.</span></span>

3. Action 이벤트가 발생하는 경우가 아닌 것은? 
 ① JButton 컴포넌트를 마우스로 클릭한 경우 
 ② JTextField 컴포넌트에 키보드로 입력하는 도중 <Enter>
 키를 입력한 경우 
 <span style="color: rgb(255, 0, 0);">③ JCheckBox 컴포넌트를 마우스로 선택한 경우</span> 
 ④ JComboBox의 아이템을
 마우스로 선택한 경우 
 <span style="color: rgb(47, 157, 39);">아이템 이벤트가 발생한다.</span>

4. 다음은 Item 리스너 클래스를 작성한다 빈칸에 적절한 코드를 삽입하라.

```java
class MyItemListener implements ItemListener {
    public void __________(__________ e) {
        if(e.getStateChange() == __________)
            System.out.println("선택되었습니다.");
        else
            System.out.println("해제되었습니다.");
     }
}
```

<span style="color: rgb(47, 157, 39);">2행: itemStateChange, ItemEvent</span> 
 <span style="color: rgb(47, 157, 39);">3행: ItemEvent.SELECTED</span>

5. 메뉴를 만들어 프레임에 붙이는 다음 코드의 빈칸에 적절한 코드를 삽입하라.

```java
JMenuBar mb = new JMenuBar();
__________ fileMenu = new __________("File"); // "File" 메뉴 생성
mb.add(fileMenu); // 메뉴바에 파일 메뉴를 붙인다.
fileMenu.add(__________); // "New" 메뉴 아이템을 생성하여 붙인다.
fileMenu.__________; // 분리선 삽입
frame.__________(mb); // 프레임에 메뉴바 붙임
```

<span style="color: rgb(47, 157, 39);">2행: JMenu, JMenu</span> 
 <span style="color: rgb(47, 157, 39);">4행:
 JMenuItem("New")</span> 
 <span style="color: rgb(47, 157, 39);">5행: addSeprator()</span> 
 <span style="color: rgb(47, 157, 39);">6행: setJMenuBar</span>

6. 다음 빈칸에 적절한 말을 보기에서 찾아 삽입하라.

<div class="txc-textbox" style="border-style: solid; border-width: 1px; border-color: rgb(0, 0, 0); background-color: rgb(255, 255, 255); padding: 10px;">
<p>간단한 팝업 다이얼로그를 생성하여 화면에 출력하려면 <u><span style="color: rgb(0, 85, 255);">JOptionPane</span></u>클래스를 이용하면 된다. 이
        클래스에는 팝업 다이얼로그를 출력하는 <span style="color: rgb(0, 85, 255);"><u>static</u></span> 타입의 메소드가 여러 개 있다. 하지만 이들은 모두
        <span style="color: rgb(0, 85, 255);"><u>모달</u></span> 다이얼로그로서 일단 화면에 출력되면 닫기 전에 다른 작업을 할 수 없는 특징이 있다.
        이름이나 주소 등 한 줄로 된 문자열을 입력받을 수 있는 간단한 입력 다이얼로그는 <span style="color: rgb(0, 85, 255);"><u>showInputDialog()</u></span>메소드를
        호출하면 된다. 이 메소드의 리턴 값은 <u><span style="color: rgb(0, 85, 255);">사용자입력 문자열</span></u>이지만, 취소 버튼이 선택되거나 강제로 창이 닫히면
        <span style="color: rgb(0, 85, 255);"><u>null</u></span>를(을) 리턴한다.<br/></p>
</div>

7. "sunny.jpg"를 가진 이미지 레이블 sunnyLabel을 만드는 코드는?

```java
ImageIcon IMG = new ImageIcon("sunny.jpg"); // 이미지 파일 로딩, 이미지 객체 생성
JLabel sunnyLabel = new JLabel(IMG); // 레이블 컴포넌트 sunnyLabel 생성
```

8. JTextArea로 만든 컴포넌트는 여러 줄의 텍스트 입력을 받을 수 있는 창이지만, 스크롤 기능을 제공하지 않는다. 스크롤이 되게 하고 컨텐트펜에 붙이고자 하면 어떻게 해야 하는지 다음 코드에 빈칸을
 이용하여 설명하라.

```java
JTextArea ta = new JTextArea();
Container c = getContentPane(); // 프레임의 컨텐트팬을 알아낸다.
____________________
____________________
```

<span style="color: rgb(47, 157, 39);">c.add(new JScrollPane(ta));</span>

9. 다음 각 경우를 위해 GUI를 구성할 때, JRadioButton, JCheckBox, JButton, JLabel 중 적절한 컴포넌트와 컴포넌트의 개수는?

(1) 사용자에게 '아침', '점심', '저녁' 중 하나를 선택하도록 한다. 
 <span style="color: rgb(47, 157, 39);">JRadioButton 3개</span>

(2) 회원 등록 시, '남/여', '내국인/외국인', '성년/미성년'의 3가지 정보를 입력받고자 한다. 
 <span style="color: rgb(47, 157, 39);">JCheckBox 3개</span>

(3) 화면을 4등분하여 4개의 이미지를 출력하고자 한다. 
 <span style="color: rgb(47, 157, 39);">JLabel 4개</span>

(4) '다음'으로 계속 진행하는 사용자 입력을 받고자 한다. 
 <span style="color: rgb(47, 157, 39);">JButton 1개</span>
