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 |