[명품자바] 9장 연습문제

sum·2022년 6월 15일
0

1

자바에서는 AWT 컴포넌트와 스윙 컴포넌트를 제공한다. 이들 중 어떤 것이 경량 컴포넌트이고, 어떤 것이 중량 컴포넌트인가? 그리고 이들은 어떤 점에서 서로 다른가?
운영체제의 도움 유무에 따라 경량 컴포넌트 또는 중량 컴포넌트로 불린다. AWT는 운영체제의 도움을 받아 화면에 출력되기 때문에 중량 컴포넌트로 불리고, 실행되는 운영체제에 따라 다른 모양으로 그려진다. 스윙은 AWT와 달리 경량 컴포넌트로, 순수 자바 언어로 작성돼 운영체제와 관계없이 항상 동일하게 작동하며 동일한 모양으로 그려진다.

2

데스크톱에서 실행되는 GUI 응용프로그램 작성 시 AWT보다 스윙 사용을 권장하는 이유는 무엇인가?
두 라이브러리는 동작하는 방식이 다르고 응용프로그램을 작성하는 방법에도 차이가 있는데, 일반적으로 다양하고 모양이 예쁜 스윙 컴포넌트를 더 많이 사용하기 때문에 스윙을 더 권장한다.

3

다음 중 스윙 컴포넌트가 아닌 것은?

  1. JPanel
  2. JTextField
  3. JLabel
  4. Button

4

다음 중 컴포넌트는?

  1. JFrame
  2. Font
  3. Color
  4. Graphics

5

컴포넌트와 컨테이너에 대해 잘못 말한 것은?

  1. 컨테이너는 컴포넌트를 담을 수 있는 컴포넌트이다.
  2. JPanel은 컨테이너로서 여러 개의 JButton 컴포넌트를 가질 수 있다.
  3. JFrame은 최상위 컨테이너이다.
  4. 컴포넌트들은 컨테이너 없이도 출력된다.

6

배치관리자에 대해 잘못 말한 것을 모두 찾아라.

  1. 배치관리자를 가지는 것은 컨테이너만의 고유 기능이며, 컴포넌트는 가질 수 없다.
  2. 배치관리자는 자신이 소속된 컨테이너의 크기를 조절한다.
  3. 컨테이너가 생성될 때 배치관리자가 없는 상태이므로 배치관리자를 설정해야 한다.
  4. 한 컨테이너는 여러 개의 배치관리자를 가질 수 있다.
  5. 배치관리자의 기능은 컨테이너에 포함된 컴포넌트들의 위치와 크기를 설정하는 것이다.
  6. 개발자는 자바에서 주어진 것 외의 새로운 배치관리자를 만들어 사용할 수 있다.
  7. 컨테이너가 배치관리자를 가지지 않도록 할 수 없다.

7

다음은 200x300 크기의 스윙 프레임을 만든 코드이다. 빈칸에 필요한 코드를 채워라.

____________________ //이곳에 필요한 import 문을 삽입하라.
public class MyFrame _______________ {
	public MyFrame() {
    	_________________ // 프레임 타이틀로 "hello" 문자열 출력
        _________________ // 프레임 크기를 200x300으로 설정
        _________________ // 프레임 화면 출력
	}
    
    public static void main(String[] args) {
    	Myframe frame = ___________
    }
}

import javax.swing.*; / extends JFrame /
setTitle("hello"); / setSize(200,300); / setVisible(true); / new MyFrame();

8

다음은 스윙 프레임을 작성한 코드이다. 빈칸을 채워라.

____________________________ // 이곳에 필요한 import 문을 삽입하라.
____________________________ // 이곳에 필요한 import 문을 삽입하라.
public class MyFrame ______________ {
	public MyFrame() {
    	__________________; // 컨텐트팬 알아내기
        __________________; // 컨텐트팬에 FlowLayout 배치관리자 설정
        __________________; // 컨텐트팬 배경색을 노란색으로 설정
        __________________; // 컨텐트팬에 "click" 버튼 달기
        setSize(300,300);
        setVisible(true);
    }
}

import javax.swing.*; / import javax.swing.*; / extends JFrame /
Container c = getContentPane() / c.setLayout(new FlowLayout()) / c.setBackground(Color.YELLOW) / JButton btn = new JButton("click")

9

다음 지시에 따라 컨테이너 c에 배치관리자를 서정하는 코드를 작성하라.

Container c;
c.________________
  1. 컴포넌트 사이의 수평 수직 간격이 각각 3, 4픽셀인 BorderLayout
    setLayout(new BorderLayout(3,4));
  2. 컴포넌트 사이의 수평 수직 간격이 각각 5, 6픽셀이고 오른쪽 정렬하는 FlowLayout
    setLayout(new FlowLayout(FlowLayout.RIGHT,5,6));
  3. 컴포넌트 사이의 수평 수직 간격이 각각 7, 8픽셀이고 행수 5, 열수 2인 GridLayout
    setLayout(new GridLayout(7,8,5,2));
  4. 현재 등록된 배치관리자 삭제
    setLayout(null);

10

버튼 컴포넌트를 통해 절대 위치에 배치하고자 한다. 주석을 참고하여 빈칸을 완성하라.

____________________________ // 이곳에 필요한 import 문을 삽입하라.
____________________________ // 이곳에 필요한 import 문을 삽입하라.
public class MyFrame ________________ {
	public MyFrame() {
    	___________________; // 컨텐트팬 알아내기
        ___________________; // 컨텐트팬에 배치관리자 제거
        ___________________; // "click" 문자열의 버튼 컴포넌트 생성
        ___________________; // 버튼의 크기를 100x30으로 설정
        ___________________; // 버튼의 위치를 (50, 70)으로 설정
        ___________________; // 컨텐트팬에 버튼 달기
        setSize(300,300);
        setVisible(true);
    }
    
    public static void main(String[] args) {
    	new MyFrame();
    }
}

import java.awt.*; / import javax.swing.*; / extends JFrame / Container c = getContentPane(); / c.setLayout(null); / JButton btn = new JButton("click"); / btn.setSize(100,30); / btn.setLocation(50,70); / c.add(btn);

0개의 댓글