IT/Java & JSP & FW

java :: GUI 프로그래밍-1

엑수시아 2011. 12. 26. 12:47
GUI
그래픽 유져 인터페이스의 약자로 보통 윈도우 프로그램으로 불리고 있는 프로그램 기법중에 하나이다. 


AWT
Abstract Window Toolkit 의 약자로 자바에서 GUI 프로그램을 작성하기 위한 도구의 집합이라고 생각하면 쉽고, java.awt라는 패키지에서 제공되는 클래스로 버튼, 체크박스 등 다양한 GUI컴포넌트 들을 만들어 낼 수 있는 도구모음이다.


Frame
자바에서의 대표적인 컨테이너

절차
1. java.awt.* 를 import한다.
2. 프래임을 생성한다.
3. 프래임의 크기를 지정한다.
4. 프레임이 화면에 나타나도록 한다. 

화면과 프레임의 크기
형식

Dimension dim=Toolkit.getDefaultToolkit().getScreenSize();


AWT 배치관리자
Component를 어떤 형태로 배치되어야 할지 결정해 주는 결정자

Layout 종류
- FlowLayout
- GridLayout 
- BorderLayout 
- CardLayout 
- GridBagLayout

예제1
(myFrame.java)
//1. import 하기
import java.awt.*;

public class myFrame {

	public static void main(String[] args) {
		
		//2. Frame 객체 생성하기
		Frame f=new Frame("나의 첫 프래임");
		
		//3. Frame 크기지정
		f.setSize(300, 300);
		
		//사용자 스크린 크기 확인하기 and 정중앙 위치시키기
		Dimension dim=Toolkit.getDefaultToolkit().getScreenSize();
		int x=(int)dim.width/2-150;
		int y=(int)dim.height/2-150;
		
		System.out.println("x="+x+"/y="+y);
		
		f.setLocation(x, y);
		
		//4. 활성화 시켜주기 (이렇게 해야 뜬다.)
		f.setVisible(true);
	}

}
예제2
(myFrame2.java)
import java.awt.*;

public class myFrame2 {

	public static void main(String[] args) {
		
		Frame f=new Frame("2");
		f.setSize(300, 300);
		
		Dimension dim=Toolkit.getDefaultToolkit().getScreenSize();
		
		int x=(int)dim.width/2-150;
		int y=(int)dim.height/2-150;
		
		f.setLocation(x, y);
		
		f.setVisible(true);
		
		//////////////버튼생성//////////////
		Button bt1=new Button("bt1");
		Button bt2=new Button("bt2");
		Button bt3=new Button("bt3");
		Button bt4=new Button("bt4");
		Button bt5=new Button("bt5");
		
		////////배치관리자 - 레이아웃 생성하기
		
		//순차적으로 컴포넌트를 고유한 모양으로 출력해주는  배치관리자.
//		FlowLayout f1=new FlowLayout(FlowLayout.CENTER,20,10);
//		f.setLayout(f1);  //f 레이아웃에 setLayout을 통해 f1을 배치관리자로 만든다.
		
		//borderlayout : 5개의 영역을 지정해 각각의 컴포넌트를 부착하는 레이아웃
		BorderLayout b1=new BorderLayout();
		f.setLayout(b1);
			
		//f 프레임에 bt1을 붙인다.
		f.add(bt1, BorderLayout.NORTH);
		f.add(bt2, BorderLayout.CENTER);
		f.add(bt3, BorderLayout.WEST);
		f.add(bt4, "South");
		f.add(bt5, "East");
	}

}
예제3
(myFrame3.java)
import java.awt.*;

public class myFrame3 extends Frame{

	public myFrame3(){
		super("GridLayoutTest");
		
		Button bt1=new Button("bt1");
		Button bt2=new Button("bt2");
		Button bt3=new Button("bt3");
		Button bt4=new Button("bt4");
		Button bt5=new Button("bt5");
		
		GridLayout g1=new GridLayout(2,3,10,10);
		
		this.setLayout(g1);
		
		this.add(bt1);
		add(bt2);
		add(bt3);
		add(bt4);
		add(bt5);
		
		//다중 레이아웃 정의
		Panel p=new Panel();
		p.setBackground(Color.yellow);
		add(p);
		
		BorderLayout b1=new BorderLayout(10,10);
		p.setLayout(b1);
		
		Button bt6=new Button("bt6");
		Button bt7=new Button("bt7");
		
		p.add(bt6, "North");
		p.add(bt7, "South");
	}
	
	//레이아웃중 기본으로 제공하지 않는 기능을 오버라이딩하여 사용하기(프레임 여백)
	@Override
	public Insets getInsets() {
		Insets i=new Insets(40,20,20,20);
		return i;
	}
	
	public static void main(String[] args) {
		myFrame3 mf=new myFrame3();
		mf.setSize(300,300);
		mf.setVisible(true);
		
	}

}
예제4
(FrameTest.java)
import java.awt.*;

public class FrameTest extends Frame {
	
	public FrameTest(){
		super("실험!");
		
		BorderLayout b=new BorderLayout(10,10);
		this.setLayout(b);
		
		/////////중단
		Panel p1=new Panel();
		this.add(p1,"Center"); //p1패널을 붙일 때, center를 붙여서 p1패널을 영역지정시킬 수 있다.
		p1.setBackground(Color.gray);
		
		GridLayout g1=new GridLayout(2,2,10,10);
		p1.setLayout(g1);
		
		Button bt1=new Button("bt1");
		Button bt2=new Button("bt2");
		Button bt3=new Button("bt3");
		Button bt4=new Button("bt4");
		p1.add(bt1);
		p1.add(bt2);
		p1.add(bt3);
		p1.add(bt4);
		
		/////////하단
		Panel p2=new Panel();
		this.add(p2,"South");
		p2.setBackground(Color.blue);
		
		BorderLayout b1=new BorderLayout();
		p2.setLayout(b1);
		
		Button bt5=new Button("bt5");
		Button bt6=new Button("bt6");
		p2.add(bt5,"North");
		p2.add(bt6,"South"); 
		
	}
	
	@Override
	public Insets getInsets() {
		Insets i=new Insets(40,20,20,20);
		return i;
	}

	public static void main(String[] args) {
		FrameTest ft=new FrameTest();
		ft.setSize(300, 300);
		
		Dimension dim=Toolkit.getDefaultToolkit().getScreenSize();
		int x=(int)dim.width/2-150;
		int y=(int)dim.height/2-150;
		ft.setLocation(x, y);
		ft.setVisible(true);
	}

}