본문 바로가기

자바

AWT 레이아웃의 종류

package pack.awt;


import java.awt.BorderLayout;

import java.awt.Button;

import java.awt.CardLayout;

import java.awt.Color;

import java.awt.Frame;

import java.awt.GridLayout;

import java.awt.Label;

import java.awt.Panel;

import java.awt.TextField;

import java.awt.event.ActionEvent;

import java.awt.event.ActionListener;

import java.awt.event.WindowAdapter;

import java.awt.event.WindowEvent;


public class LayoutTest extends Frame implements ActionListener{ //Frame은 BorderLayout 기본

private static final long serialVersionUID = 1L;

Panel pn1 = new Panel(); //Panel은 Flowlayout이 기본

Panel pn2 = new Panel();

Panel pn3 = new Panel();

Panel pn4 = new Panel();

Panel pn5 = new Panel();

Panel pn6 = new Panel();

Button btnGo;

TextField txtBun, txtIrum;

CardLayout card = new CardLayout();

public LayoutTest(){

/*

* 레이아웃의 종류 : Card,Grid,Flow,Border layout 

*/

setLayout(new GridLayout(2,1)); //frame의 레이아웃 변경(2행1열)

//첫번째 행

Label lbl1 = new Label("bunho : "); //Label - 메시지 컴포넌트(그대로 출력되어 보여짐)

txtBun = new TextField("10",20); //TextField - 키보드로 자료입력 가능, TextField(초기값,길이)

pn1.add(lbl1); //pn1 속성값들 셋팅

pn1.add(txtBun);

pn1.setBackground(Color.yellow);

// this.add(pn1); //frame에 panel을 배치

Label lbl2 = new Label("bunho : ");

txtIrum = new TextField("홍길동", 20);

pn2.add(lbl2); //pn1 속성값들 셋팅

pn2.add(txtIrum);

pn2.setBackground(Color.cyan);

//pn3는 FlowLayout -> CardLayout으로 변경 : 컴포넌트 겹치기

pn3.setLayout(card);

pn3.add("aa",pn1); //aa가 bb위에 있게됨(bb는 가려져서 안보이고 aa가 보임)

pn3.add("bb",pn2);

btnGo = new Button("OK");

btnGo.addActionListener(this); // 버튼 클릭 리스너 : actionPerformed() 가 실행됨(ActionListner의 override 메소드)

pn4.add(pn3); //FlowLayout //pn4안에 pn3를 넣는다.

pn4.add(btnGo);

this.add(pn4);

//두번째 행

pn6.setBackground(Color.red);

pn6.setLayout(new BorderLayout()); //보더레이아웃

pn5.add(new Label("pn5 align center", Label.CENTER));

pn6.add("Center", pn5);

pn6.add("East", new Label("East"));

pn6.add("West", new Label("West"));

pn6.add("South", new Label("South", Label.CENTER));

pn6.add("North", new Label("North", Label.CENTER));

this.add(pn6);

this.setTitle("레이아웃 연습");

this.setBounds(200,200,400,300);

this.setVisible(true);

addWindowListener(new WindowAdapter() {

@Override

public void windowClosing(WindowEvent e) {

System.exit(0);

}

});

}


@Override

public void actionPerformed(ActionEvent e) {

//버튼 클릭 시 pn1과 pn2 교대로 출력

if(e.getActionCommand().equals("OK")){ //equalsIgnoreCase는 대소문자 구분안함

btnGo.setLabel("Click");

card.show(pn3,"bb");

}else{

btnGo.setLabel("OK");

card.show(pn3,"aa");

}

}

public static void main(String[] args) {

new LayoutTest();

}


}



'자바' 카테고리의 다른 글

모듈별(단위별) 테스트  (0) 2014.02.27
Swing 예제  (0) 2014.02.27
AWT를 이용한 간단한 메모장 작성  (0) 2014.02.25
동기화 synchronized  (0) 2014.02.25
쓰레드로 만든 시계  (0) 2014.02.24