문제와 해답은 직접 작성한 것으로 오타가 있을 수도 있으며 해답역시 틀린 부분이 있을 수 있습니다. 틀린 부분에 대한 지적은 적극 수용하도록 하겠습니다. 문제를 먼저 풀어보시고 참고용으로만 봐주시길 바랍니다.



연습문제 8장

1. 다음 중에서 스윙 컴포넌트 클래스가 아닌 것은?
① Panel
② JFrame
③ JButton
④ JLabel


2. 다음 중에서 컴포넌트가 아닌 것은?
① Panel
② JFrame
③ Font
④ JPanel


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

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

3행 : JFrame
5행 : Container c = getContentPane();
6행 : c.add(new JButton("hello"));
7행 : setSize(200, 400);
11행 : new MyFrame();


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

1
2
3
4
5
6
7
8
9
10
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행을 다음과 같이 수정 : new MyFrame();


5. 컴포넌트와 컨테이너에 대해 잘못 말한 것은?
① JFrame은 컨테이너다.
② 컨테이너는 다른 컨테이너에 삽입될 수 없다.
③ 배치관리자는 컨테이너에서 컴포넌트의 배치를 담당한다.
④ 컴포넌트나 컨테이너가 화면에 출력되려면 최상위 컨테이너에 포함되어야 한다.


6. 배치 관리자에 대해 잘못 말한 것은?
① 배치관리자는 컨테이너에 포함된 컴포넌트들의 위치와 크기를 설정한다.
② 배치관리자는 한 컨테이너에 여러 개 존재할 수 있다.
③ 배치관리자가 없는 컨테이너를 만들 수 있다.
④ JPanel은 배치관리자를 가지지만 JButton은 배치관리자를 가지지 않는다.


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

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

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

c.setLayout(new BorderLayout(10, 20));

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

c.setLayout(new FlowLayout(FlowLayout.CENTER, 10, 20));

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

c.setLayout(new GridLayout(2, 5, 10, 20));


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

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
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행 : Container c = getContentPane();
6행 : c.setLayout(null);
8행 : b.setLocation(30, 40);
9행 : b.setSize(100, 100);
10행 : c.add(b);


WRITTEN BY

배진오

소비적인 일보단 생산적인 일을 추구하며, 좋아하는 일을 잘하고 싶어합니다 :D
im@baejino.com