본문 바로가기
Java

JAVA GUI - Frame, Panel

by leo21c 2012. 12. 1.
SMALL

GIU - AWT    - application - 초기
        swing  - application -많은 API이 나와 있다.
        applet  - web - 더이상 사용하지 않는다.

applet는 최근에 많이 사용하지 않고 있다.
웹에서 동적인 것을 만들어 사용할 수 있었다.
브라우저에서 자바 어플리케이션을 실행하도록 만들어진 기술이다.
microsoft의 ie에서 jvm을 지원하지 않는 문제로 점차 사라졌다.

servlet은 웹브라우저에 의해서 실행된다. 
middlet은 모바일 게임을 만들때 사용을 했다.
요즘은 servlet, middlet 둘 다 거의 사용을 하지 않는다.

let로 끝나는 기술은 구동방식이 다르다. java는 기존에는 main 함수로 시작을 하는데 let로 시작하는 것은 다른 방식으로 구동한다. 그래서 main 함수가 없다. 각각 나름의 구동 방식을 가지고 있다.


1. Container
  레고를 예를들면 맨처음에 블럭을 끼울수 있는 판이 있다. 내가 꼽고자하는 컴포넌트를 끼울 판이라고 생각하면 된다.
  - 레고를 어디에 붙일 것인가가 중요하다. 내가 넣고자 하는 버튼을 어디에 붙일 것인가? 자바에서는 컴포넌트를 배치할때 좌표값을 이용하지 않는다. 자바는 플랫폼을 다양하게 사용할 수 있기 때문에 좌표를 사용하면 플랫폼 별로 문제가 발생할 수 있다.
  - Layout Manager에서 레이아웃을 관리한다.
  - 각각의 레이아웃의 특성을 알아야 한다.

2. Component
  레고의 각 블럭(내용물)을 생각하면 된다.
  - 자바는 객체를 가지고 이루어져 있기 때문에 버튼을 사용하고 싶으면 버튼 클래스의 객체를 생성하면 된다.
  - AWP api에서 원한느 객체를 생성하면 된다.
     Button bt = new Button();

3. Event
  내가 구현하고자 하는 일어나는 사건 들을 의미한다.
  - Event Source -> who (대상)
  - Action Event  
     Event Source . addActionListrener( 이곳에 Event Handler의 객체가 들어간다. )
          (대상)      .      (이벤트 정의)
  - Event Handler => 객체
     이벤트 내용, 이벤트가 발생한 결과


* 예제 

import java.awt.BorderLayout;
import java.awt.Button;
import java.awt.Color;
import java.awt.Frame;

public class Awt_exam {

	public static void main(String[] args) {
		//Container => Frame, Panel
		//Frame => 독자적인 컨테이너 => BorderLayout(동,서,남,북,센터)
		//Panel => Frame에 붙여서 사용 => FlowLayout(왼쪽->오른쪽, 위->아래)
		
		// Frame 객체를 생성한다.
		Frame f = new Frame("First Frame");
		
		// Button 객체를 생성한다.
		Button bt1 = new Button("Button 1");
		Button bt2 = new Button("Button 2");
		Button bt3 = new Button("Button 3");
		Button bt4 = new Button("Button 4");
		Button bt5 = new Button("Button 5");

//		p.add(bt1);
//		p.add(bt2);
//		p.add(bt3);
//		p.add(bt4);
//		p.add(bt5);
//		
//		f.add(p);
			
		// BorderLayout 처리를 한다.
		// 처리를 하지 않으면 default인 CENTER에 모두 표현된다.
		f.add(bt1, BorderLayout.EAST);
		f.add(bt2, BorderLayout.WEST);
		f.add(bt3, BorderLayout.SOUTH);
		f.add(bt4, BorderLayout.NORTH);
		f.add(bt5, BorderLayout.CENTER);		
		
		// 위와 Frame을 만들어 처리하는 것과 같이 레이아웃을 변경할 수 있다.
		f.setLayout(new FlowLayout());

		// Frame 크기를 설정한다.
		f.setSize(200, 300);
		// 화면에 표시하기 위해 true를 설정한다.
		f.setVisible(true);
		
               // 색을 변경하는 부분
		for (int i = 0; i < 256; i++) {
			f.setBackground(new Color(i, (i+100)%256, (i+200)%256));
			try {
				//Thread.sleep은 인터럽트가 발생하기 때문에 try문에 
                                //넣지 않으면 컴파일이 되지 않는다.
				Thread.sleep(10);
			}
			catch(Exception e) {
				
			}
		}
	}
}

                                                                      < FlowLayout >

           


LIST

'Java' 카테고리의 다른 글

Java GUI - Image  (0) 2012.12.01
Java GUI - 간단한 Table 이용방법  (0) 2012.12.01
Java GUI - 간단한 메모장 만들기  (0) 2012.12.01
Java GUI - Event  (0) 2012.12.01
Java path 설정 및 에러(classpath) 해결 방법  (0) 2012.11.10