2021. 12. 19. 19:23ㆍSolution`/Java
[9장 1번]
자바에서는 AWT 컴포넌트와 스윙 컴포넌트를 제공한다. 이들 중 어떤 것이 경량 컴포넌트이고, 어떤 것이 중량 컴포넌트인가? 그리고 차이점은?
- awt 컴포넌트가 중량 컴포넌트이고, swing 컴포넌트가 경량 컴포넌트이다.
- awt는 해당 운영체제의 gui를 빌려 쓰는거라서 운영체제에 따라 배치나 모양이 다르고 속도가 빠르다. 하지만 운영체제에 따라 버그가 발생한다
- swing은 운영체제의 자원을 빌리지 않고, 직접 화면에 그려서 운영체제간에 버그를 해결한다. 자바언어로만 구성되어 있고 속도가 느리다
[9장 2번]
데스크톱에서 실행되는 GUI 응용프로그램 작성 시 AWT보다 스윙 사용을 권장하는 이유는?
- swing은 운영체제와 관계없이 항상 동일하게 작동하고, 동일한 모양으로 나타나고, awt보다 나중에 개발되어서 더 다양하고 모양도 화려하다. 그리고 컴포넌트 코드들을 전부 자바로 구성해서 안전하다
[9장 3번]
다음 중 스윙컴포넌트가 아닌 것은?
1. JPanel
2. JTextField
3. JLabel
4. Button
[9장 4번]
다음 중 컴포넌트는?
1. JFrame
2. Font
3. Color
4. Graphics
[9장 5번]
컴포넌트와 컨테이너에 대해 잘못 말한 것은?
1. 컨테이너는 컴포넌트를 담을 수 있는 컴포넌트이다.
2. JPanel은 컨테이너로서 여러 개의 JButton 컴포넌트를 가진다.
3. JFrame은 최상위 컨테이너다.
4. 컴포넌트들은 컨테이너 없이도 출력된다.
[9장 6번]
컴포넌트와 컨테이너에 대해 잘못 말한 것을 모두 찾아라.
1. 배치관리자를 가지는 것은 컨테이너만의 고유 기능이며, 컴포넌트는 가질 수 없다.
2. 배치관리자는 자신이 소속된 컨테이너의 크기를 조절한다.
3. 컨테이너가 생성될 때 배치관리자가 없는 상태이므로 배치관리자를 설정해야 한다.
4. 한 컨테이너는 여러 개의 배치관리자를 가질 수 있다.
5. 배치관리자의 기능은 컨테이너에 포함된 컴포넌트들의 위치와 크기를 설정하는 것
6. 개발자는 자바에서 주어진 것 외 새로운 배치관리자를 만들어 사용할 수 있다.
7. 컨테이너가 배치관리자를 가지지 않도록 할 수 없다.
[9장 7번]
200*300크기의 스윙프레임을 만든 코드이다. 빈칸에 필요한 코드를 채워라.
____________________ // 이곳에 필요한 import 문을 삽입하라
public class MyFrame ____________________{
public MyFrame(){
____________________ // 프레임 타이틀로 "hello" 문자열 출력
____________________ // 프레임 크기를 200x300으로 설정
____________________ // 프레임 화면 출력
}
public static void main(String[] args){
MyFrame frame = ____________________
}
}
>> 풀이
import javax.swing.*; // 이곳에 필요한 import 문을 삽입하라
public class MyFrame extends JFrame{
public MyFrame(){
super("hello"); // 프레임 타이틀로 "hello" 문자열 출력
setSize(200, 300); // 프레임 크기를 200x300으로 설정
setVisible(true); // 프레임 화면 출력
}
public static void main(String[] args){
MyFrame frame = new MyFrame();
}
}
[9장 8번]
스윙프레임을 작성한 코드이다. 빈칸에 필요한 코드를 채워라.
____________________ // 이곳에 필요한 import 문을 삽입하라
____________________ // 이곳에 필요한 import 문을 삽입하라
public class MyFrame ____________________{
public MyFrame(){
____________________ // 컨텐트팬 알아내기
____________________ // 컨텐트팬에 FlowLayout 배치관리자 설정
____________________ // 컨텐트팬 배경색을 노란색으로 설정
____________________ // 컨텐트팬에 "click" 버튼 달기
setSize(300, 300);
setVisible(true):
}
}
>> 풀이
import javax.swing.*; // 이곳에 필요한 import 문을 삽입하라
import java.awt.*; // 이곳에 필요한 import 문을 삽입하라
public class MyFrame extends JFrame{
public MyFrame(){
Container c = getContentPane(); // 컨텐트팬 알아내기
c.setLayout(new FlowLayout()); // 컨텐트팬에 FlowLayout 배치관리자 설정
c.setBackground(Color.YELLOW); // 컨텐트팬 배경색을 노란색으로 설정
c.add(new JButton("click")); // 컨텐트팬에 "click" 버튼 달기
setSize(300, 300);
setVisible(true):
}
}
[9장 9번]
다음 지시에 따라 컨테이너 c에 배치관리자를 설정하는 코드를 작성하라.
Container c;
c.____________________
(1) 컴포넌트 사이의 수평 수직 간격이 각각 3, 4픽셀인 BorderLayout
setLayout(new BorderLayout(3, 4));
(2) 컴포넌트 사이의 수평 수직 간격이 각각 5, 6픽셀이고 우측정렬을 하는 FlowLayout
setLayout(new FlowLayout(5, 6));
(3) 컴포넌트 사이의 수평 수직 간격이 각각 7, 8픽셀이고 행5, 열2인 GridLayout
setLayout(new GridLayout(7, 8, 5, 2));
(4) 현재 등록된 배치관리자 삭제
setLayout(null);
[9장 10번]
버튼 컴포넌트를 절대 위치에 배치하고자 한다. 주석을 참고해 빈칸을 완성하라.
____________________ // 이곳에 필요한 import 문을 삽입하라
____________________ // 이곳에 필요한 import 문을 삽입하라
public class MyFrame ____________________{
public MyFrame(){
____________________ // 컨텐트팬 알아내기
____________________ // 컨텐트팬에 배치관리자 제거
____________________ // "click" 문자열의 버튼 컴포넌트 생성
____________________ // 버튼의 크기를 100x30으로 설정
____________________ // 버튼의 위치를 (50,70)으로 설정
____________________ // 컨텐트팬에 버튼 달기
setSize(300, 300);
setVisible(true):
}
public static void main(String[] args){
MyFrame frame = ____________________
}
}
>> 풀이
import javax.swing.*; // 이곳에 필요한 import 문을 삽입하라
import java.awt.*; // 이곳에 필요한 import 문을 삽입하라
public class MyFrame extends JFrame{
public MyFrame(){
Container c = getContentpane(); // 컨텐트팬 알아내기
c.setLayout(null); // 컨텐트팬에 배치관리자 제거
JButton jb = new JButton("click"); // "click" 문자열의 버튼 컴포넌트 생성
jb.setSize(100, 30); // 버튼의 크기를 100x30으로 설정
jb.setLocation(50, 70); // 버튼의 위치를 (50,70)으로 설정
c.add(jb); // 컨텐트팬에 버튼 달기
setSize(300, 300);
setVisible(true):
}
public static void main(String[] args){
MyFrame frame = new MyFrame();
}
}