5. 프레임에 설정되어 있는 기본 배치관리자를 사용하고, 다음 조건을 만족하는 클래스를 구현하여 테스트하는 프로그램을 작성하시오.
- 윈도 상단의 버튼 4개를 패널에 삽입하여 프레임 북쪽에 삽입
* 패널은 배치관리 1행 4열 GridLayout으로 지정
- 윈도 하단의 버튼 3개는 다음과 같은 모습이 되도록 패널을 적절히 이용하여 삽입한 후, 프레임 남쪽에 삽입
* 패널은 배치관리 1행 2열 GridLayout으로 지정하여, 버튼 "전화걸기"와 다시 버튼 "이전", "지우기" 2개가 삽입된 패널을 삽입
<소스코드> Chapter9_5.java
package Chapter9_5;
import java.awt.BorderLayout;
import java.awt.GridLayout;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JPanel;
public class Chapter9_5 extends JFrame{
public Chapter9_5(String title) {
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setTitle(title);
setSize(400,200);
setLayout(new BorderLayout());
JPanel northPanel = new JPanel();
northPanel.setLayout(new GridLayout(1, 4));
northPanel.add(new JButton("키패드"));
northPanel.add(new JButton("최근기록"));
northPanel.add(new JButton("즐겨찾기"));
northPanel.add(new JButton("연락처"));
JPanel southPanel = new JPanel();
southPanel.setLayout(new GridLayout(1, 2));
JPanel southSubPanel = new JPanel();
southSubPanel.setLayout(new GridLayout(1, 2));
southSubPanel.add(new JButton("이전"));
southSubPanel.add(new JButton("즐겨찾기"));
southPanel.add(new JButton("키패드"));
southPanel.add(southSubPanel);
add(northPanel, BorderLayout.NORTH);
add(southPanel, BorderLayout.SOUTH);
setVisible(true);
}
public static void main(String[] args) {
// TODO Auto-generated method stub
Chapter9_5 c = new Chapter9_5("다이얼 패드를 위한 기본 버튼");
}
}
6. 프레임에 설정되어 있는 기본 배치관리자를 사용하고, 위 5번 문제를 확장하며, 다음 조건을 만족하는 클래스를 구현하여 테스트하는 프로그램을 작성하시오.
- 5번에 구현한 프레임의 중앙에 다음 윈도와 같이 텍스트필드와 12개의 버튼을 구성
- 윈도 중앙에 다음 패널 하나를 구성하여 삽입
* 패널은 배치관리 BorderLayout을 지정하여 북쪽에 텍스트필드를 삽입하고 중아에 버튼 12개가 삽입된 패널을 삽입
<소스코드> Chapter9_6.java
package Chapter9_6;
import java.awt.BorderLayout;
import java.awt.GridLayout;
import java.awt.TextField;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JPanel;
public class Chapter9_6 extends JFrame {
public Chapter9_6(String title) {
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setTitle(title);
setSize(400,350);
setLayout(new BorderLayout());
JPanel northPanel = new JPanel(); // 윗부분 패널
northPanel.setLayout(new GridLayout(1, 4));
northPanel.add(new JButton("키패드"));
northPanel.add(new JButton("최근기록"));
northPanel.add(new JButton("즐겨찾기"));
northPanel.add(new JButton("연락처"));
JPanel centerPanel = new JPanel(); // 가운데 부분 패널
centerPanel.setLayout(new BorderLayout());
centerPanel.add(new TextField(),BorderLayout.NORTH); // 북쪽에 텍스트 필드 추가
JPanel centerSubPanel = new JPanel();
centerSubPanel.setLayout(new GridLayout(4, 3));
for(int i=1;i<=9;i++) {
centerSubPanel.add(new JButton(i+""));
}
centerSubPanel.add(new JButton("*"));
centerSubPanel.add(new JButton("0"));
centerSubPanel.add(new JButton("#"));
centerPanel.add(centerSubPanel,BorderLayout.CENTER);
JPanel southPanel = new JPanel(); // 밑부분 패널
southPanel.setLayout(new GridLayout(1, 2));
JPanel southSubPanel = new JPanel();
southSubPanel.setLayout(new GridLayout(1, 2));
southSubPanel.add(new JButton("이전"));
southSubPanel.add(new JButton("즐겨찾기"));
southPanel.add(new JButton("키패드"));
southPanel.add(southSubPanel);
add(northPanel, BorderLayout.NORTH);
add(southPanel, BorderLayout.SOUTH);
add(centerPanel, BorderLayout.CENTER);
setVisible(true);
}
public static void main(String[] args) {
// TODO Auto-generated method stub
Chapter9_6 c = new Chapter9_6("다이얼 패드");
}
}
7. 프레임에 설정되어 있는 기본 배치관리자를 사용하고, 다음 조건을 만족하는 클래스를 구현하여 테스트하는 프로그램을 작성하시오.
- 윈도 상단은 레이블 "일 자:"와 날짜형태의 형식이 있는 텍스트필드로 구성하여 프레임 북쪽에 삽입
* 레이블과 형식이 있는 텍스트필드가 삽입되는 패널도 BorderLayout으로 구성
- 윈도 왼쪽에는 레이블 "메 모:" 삽입
- 윈도 중앙에는 텍스트영역을 삽입
* 텍스트영역은 항상 수평과 수직의 스크롤 바가 표시되도록 스크롤패인을 이ㅛㅇ
<소스코드> Chapter9_7.java
package Chapter9_7;
import java.awt.BorderLayout;
import java.awt.Dimension;
import java.awt.FlowLayout;
import java.awt.GridLayout;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.JTextArea;
import javax.swing.JTextField;
import javax.swing.SwingConstants;
public class Chapter9_7 extends JFrame{
public Chapter9_7(String title) {
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setTitle(title);
setSize(400,300);
setLayout(new BorderLayout());
JPanel northJPanel = new JPanel();
northJPanel.setLayout(new BorderLayout());
northJPanel.add(new JLabel("일 자:"),BorderLayout.WEST);
JTextField tf = new JTextField();
tf.setText("2012. 7.22");
tf.setPreferredSize(new Dimension(345, 20));
northJPanel.add(tf,BorderLayout.EAST);
add(northJPanel,BorderLayout.NORTH);
add(new JLabel("제 목:"),BorderLayout.WEST);
JTextArea jt = new JTextArea(12,30);
jt.setText("메모를 남기세요");
JScrollPane js = new JScrollPane(jt);
js.setVerticalScrollBarPolicy(JScrollPane.VERTICAL_SCROLLBAR_ALWAYS); // 항상 수직 스크롤바 표시
js.setHorizontalScrollBarPolicy(JScrollPane.HORIZONTAL_SCROLLBAR_ALWAYS); // 항상 수평 스크롤바 표시
add(js,BorderLayout.CENTER);
setVisible(true);
}
public static void main(String[] args) {
// TODO Auto-generated method stub
Chapter9_7 c = new Chapter9_7("형식이 있는 텍스트필드와 텍스트영역");
}
}
8. 프레임에 설정되어 있는 기본 배치관리자를 사용하고, 다음 조건을 만족하는 클래스를 구현하여 테스트하는 프로그램을 작성하시오.
- 스윙의 패키지를 삽입한 리스트를 구성하여 윈도우 중앙에 삽입
* 리스트는 필요하면 수직 스크롤 바가 생기도록 구성
- 영어로 1월부터 12월이 삽입된 콤보박스를 구성하여 윈도우 남쪽에 삽입
* 콤보박스는 편집 가능하도록 구현
<소스코드> Chapter9_8.java
package Chapter9_8;
import java.awt.BorderLayout;
import javax.swing.JComboBox;
import javax.swing.JFrame;
import javax.swing.JList;
import javax.swing.JScrollPane;
public class Chapter9_8 extends JFrame{
public Chapter9_8(String title) {
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setTitle(title);
setSize(400,200);
setLayout(new BorderLayout());
String swing[] = {"javax.accessibility", "javax.swing,javax.swing.border",
"javax.swing.event", "javax.swing.filechooser",
"javax.swing.plaf", "javax.swing.plaf.basic", "javax.swing.plaf.metal"};
JList<String> pkg = new JList<String>(swing);
pkg.setVisibleRowCount(4); // JList 목록을 스크롤 페인을 사용하므로 보이는 항목 수를 지정
JScrollPane sp = new JScrollPane(pkg); // JList 목록 객체를 인자로 스크롤 패인 생성
sp.setVerticalScrollBarPolicy(JScrollPane.VERTICAL_SCROLLBAR_AS_NEEDED);
// 필요할때만 수직 스크롤 바 생성
String month[]= {"January","February","March","April","May","June","July",
"August","September","October","November","December"};
JComboBox<String> cb = new JComboBox<String>(month);
cb.setEditable(true); // 콤보박스 편집 가능
cb.setSelectedIndex(3);
add(sp, BorderLayout.CENTER);
add(cb,BorderLayout.SOUTH);
setVisible(true);
}
public static void main(String[] args) {
// TODO Auto-generated method stub
Chapter9_8 c = new Chapter9_8("목록 선택을 위한 콘트롤");
}
}
9. 프레임의 배치관리 GridLayout으로 수정하고, 다음 조건을 만족하는클래스를 구현하여 테스트하는 프로그램을 작성하시오.
- 배치관리 GridLayout에서 가로와 세로 사이의 간격을 각각 10, 20으로 지정
- 버튼에 번호 1, 2, 3, 4를 부여하여 삽입
- 패널에 색상 yellow, pink, green, blue를 지정하여 삽입
<소스코드> Chapter9_9.java
package Chapter9_9;
import java.awt.Color;
import java.awt.GridLayout;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JPanel;
public class Chapter9_9 extends JFrame{
public Chapter9_9(String title) {
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setTitle(title);
setSize(400,250);
setLayout(new GridLayout(2,4,10,20));
add(new JButton("1"));
JPanel jp1 = new JPanel();
jp1.setBackground(Color.YELLOW);
add(jp1);
add(new JButton("2"));
JPanel jp2 = new JPanel();
jp2.setBackground(Color.PINK);
add(jp2);
JPanel jp3 = new JPanel();
jp3.setBackground(Color.GREEN);
add(jp3);
add(new JButton("3"));
JPanel jp4 = new JPanel();
jp4.setBackground(Color.BLUE);
add(jp4);
add(new JButton("4"));
setVisible(true);
}
public static void main(String[] args) {
// TODO Auto-generated method stub
Chapter9_9 c = new Chapter9_9("Grid Button");
}
}
참고자료 : 인피니티북스 절대 JAVA
github 주소 :
https://github.com/ch1517/Network-programming/tree/master/Chapter9
'Programming Study > 절대JAVA' 카테고리의 다른 글
[절대JAVA]10장 프로그래밍 연습문제(2) (0) | 2018.10.03 |
---|---|
[절대JAVA]10장 프로그래밍 연습문제(1) (0) | 2018.10.01 |
[절대JAVA]9장 프로그래밍 연습문제(1) (0) | 2018.09.28 |
[절대JAVA]8장 프로그래밍 연습문제(2) (0) | 2018.09.27 |
[절대JAVA]8장 프로그래밍 연습문제(1) (0) | 2018.09.27 |
댓글