본문 바로가기
Programming Study/절대JAVA

[절대JAVA]9장 프로그래밍 연습문제(2)

by 푸고배 2018. 9. 29.

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

반응형

댓글