본문 바로가기

Language/JAVA

[JAVA] 명품 자바 에센셜 예제 8장

 

예제 8-1 : 300x300 크기의 스윙 프레임 만들기

package chap08;
//예제 8-1
import javax.swing.JFrame;

public class MyFrame extends JFrame{
	public MyFrame(){
		setTitle("300x300 프레임 만들기");
		setSize(300,300);
		setDefaultCloseOperation(EXIT_ON_CLOSE);
		setVisible(true);
	}
	
	public static void main(String[] args) {
		MyFrame frame=new MyFrame();
	}
}

 

예제 8-2 : 3개의 버튼 컴포넌트를 가진 스윙 프레임 만들기
문제:다음 그림과 같이 콘텐트팬의 배경색을 오렌지색으로 하고 , OK, Cancel, Ignore 버튼을 부착한 스윙 프로그램을 작성하라.

package chap08;

import java.awt.Color;
import java.awt.Container;
import java.awt.FlowLayout;

import javax.swing.JButton;
import javax.swing.JFrame;

public class ContentPaneEx extends JFrame{

	public ContentPaneEx() {//메서드
		setTitle("ContentPane과 JFrame예제");
		setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		
		Container contentPane=getContentPane();
		contentPane.setBackground(Color.orange);
		contentPane.setLayout(new FlowLayout());
		
		contentPane.add(new JButton("OK"));
		contentPane.add(new JButton("Cancel"));
		contentPane.add(new JButton("Ignore"));
		
		setSize(300,150);
		setVisible(true);
	}
	
	public static void main(String[] args) {
		new ContentPaneEx();
		}

}

 

예제 8-3 : FlowLayout 배치관리자 활용
문제: FlowLayout 배치관리자를 사용하여 다음 그림과 같이 5개의 버튼을 배치하라.

package chap08;

import java.awt.Container;
import java.awt.FlowLayout;

import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.text.AbstractDocument.Content;

public class FlowLayoutEx extends JFrame {

	public FlowLayoutEx() {
		setTitle("FlowLayout 예제");
		setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		Container contentPane=getContentPane();
		
		contentPane.setLayout(new FlowLayout(FlowLayout.LEFT,30,40));//수평 간격 30, 수직 간격40
		
		contentPane.add(new JButton("add"));
		contentPane.add(new JButton("sub"));
		contentPane.add(new JButton("mul"));
		contentPane.add(new JButton("div"));
		contentPane.add(new JButton("Calculate"));
		
		setSize(500,300);
		setVisible(true);
	}
	
	public static void main(String[] args) {
		// TODO Auto-generated method stub
		new FlowLayoutEx();
	}

}

 

예제 8-4 : BorderLayout 배치관리자 활용

package chap08;

import java.awt.BorderLayout;
import java.awt.Container;

import javax.swing.JButton;
import javax.swing.JFrame;


public class BorderLayoutEx extends JFrame{
	public BorderLayoutEx() {
		setTitle("BorderLayout 예제");
		setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		Container contentPane=getContentPane();
		
		contentPane.setLayout(new BorderLayout(30,20));
		
		contentPane.add(new JButton("Calculate"),BorderLayout.CENTER);
		contentPane.add(new JButton("div"),BorderLayout.WEST);
		contentPane.add(new JButton("mul"),BorderLayout.EAST);
		contentPane.add(new JButton("sub"),BorderLayout.SOUTH);
		contentPane.add(new JButton("add"),BorderLayout.NORTH);
		
		setSize(500,200);
		setVisible(true);
	}
	
	public static void main(String[] args) {
		new BorderLayoutEx();
	}

}

 

8-5 : GridLayout 배치관리자를 사용하는 예

package chap08;

import java.awt.Container;
import java.awt.GridBagLayout;
import java.awt.GridLayout;

import javax.swing.JButton;
import javax.swing.JFrame;

public class GridLayoutEx  extends JFrame{
	
	public GridLayoutEx() {
		super("GridLayout 예제 ");
		setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		Container contentPane=getContentPane();
				
		//1x10의 GridLayout 배치관리자
		contentPane.setLayout(new GridLayout(1,10));
		
		for(int i=0;i<10;i++) {
			int text=i;
			contentPane.add(new JButton(Integer.toString(text)));
		}
		
		setSize(400,300);
		setVisible(true);
	}
	
	public static void main(String[] args) {
		new GridLayoutEx();
	}

}

 

예제 8-6 : 배치관리자 없는 컨테이너에 컴포넌트를 절대위치와 절대 크기로 지정

package chap08;

import java.awt.Container;

import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;

//컨텐트팬에 배치관리자를 삭제하고 9개의 버튼과 하나의 문자열을 출력하는 프로그램 작성

public class NullContainerEx extends JFrame{

	public NullContainerEx() {
		setTitle("배치관리자 없이 절대 위치에 배치");
		setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		Container contentPane=getContentPane();
		contentPane.setLayout(null);
		
		JLabel la=new JLabel("Hello, Press Buttons!");
		la.setLocation(130,50);
		la.setSize(200,20);
		contentPane.add(la);//la를 컨텐트팬에 부착
		
		//9개의 버튼 컴포넌트를 생성하고 동일한 크기로 설정
		//위치는 서로 겹치게 설정
		for(int i=0; i<=9;i++) {
			JButton b=new JButton(Integer.toString(i));
			b.setLocation(i*15, i*15);
			b.setSize(50,20);
			contentPane.add(b);
		}
		setSize(300,200);
		setVisible(true);
	}
	
	public static void main(String[] args) {
		// TODO Auto-generated method stub
		new NullContainerEx();
	}
}