ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • java :: GUI 프로그래밍-1
    IT/Java & JSP & FW 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);
    	}
    
    }
Designed by Tistory.