문제와 해답은 직접 작성한 것으로 오타가 있을 수도 있으며 해답역시 틀린 부분이 있을 수 있습니다. 틀린 부분에 대한 지적은 적극 수용하도록 하겠습니다. 문제를 먼저 풀어보시고 참고용으로만 봐주시길
바랍니다.
연습문제 8장
1. 다음 중에서 스윙 컴포넌트 클래스가 아닌 것은?
① Panel
② JFrame
③ JButton
④
JLabel
2. 다음 중에서 컴포넌트가 아닌 것은?
① Panel
② JFrame
③ Font
④ JPanel
3. 다음 코드의 빈칸에 스윙 프로그램에 필요한 문을 삽입하라.
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. 다음 프로그램을 실행하면 아무것도 출력되지 않는다. 정상적으로 작동하도록 프로그램을 수정하라.
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. 다음 코드에서 컨텐트팬의 배치관리자를 아래 문항에 주어진 대로 설정하라.
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. 컴포넌트를 절대 위치에 부착하고자 한다. 주석문을 참고하여 빈칸에 적절한 코드를 삽입하라.
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);
Ghost