- [Java 기본] AWT - Panel, Label, Button, Checkbox, Choice, List, TextField, TextArea

Posted by 겨울에
2011. 5. 14. 16:04 scrap/ Java/JSP
출처 : http://cafe.naver.com/litave/377


//===========================================================================//
  본 내용은 2002년 제가 Java 강의를 수강하며 정리 했던 내용을
    기본으로 하여 정리하였습니다.
  - 마침 java 기초를 전파할 기회가 생겨 핑계김에 정리해 가려 합니다.
  작성자 : litwave
//---------------------------------------------------------------------------//

<목차>
1. Component
  - PanelLabelButtonCheckboxChoiceListTextFieldTextArea

//---------------------------------------------------------------------------//

1. Component 설명
  1.1 Panel
    -> 하나의 Layout에는 하나의 객체 밖에 표현할 수 없지만, 복잡한 레이아웃을 만들기 위해서는 
       Panel 을 사용하여 하나의 공간을 만들어 여러개의 작업을 넣을 수 있다.
       Panel 은 BorderLayoutFlowLayoutGridLayout 등을 담을 수 있다.

  1.2 Label
    - 글자를 적을 수 있는 객체이다.
    1) 메소드
        getText();          // 현재 들어 있는 Text를 가져 오는 것
        setText(String);    // 어떤 문자로 저장하는 것

  1.3 Button
    1) 생성자 :
        Button();
        Button(String);
    2) 메소드
        getLabel();
        setLabel(String);

  1.4 Checkbox
    1)  생성자 :
       new Checkbox();     // ㅁ
       new Checkbox("text");  // ㅁ text    // default false
       new Checkbox("text1"true);   // 채크된 상태로 체크박스 생김. 

       new Checkbox("남성"true, cg);    // cg라는 그룹으로 묶음... 동그란 채크 박스 생김
       new Checkbox("여성", cg, false);   // 

       // 뒤에 선언 되어 있어야 한다. CechboxGroup cg = new CheckboxGroup();
    2) 메소드 :
       getState();   //  현재의 채크상태를 알고 싶을 때 사용
       setState();   //  채크를 할지 말지 설정

  1.5 Choice
    1) 생성자 :
        new Choice();
     ex) Choice ch = new Choice();
         ch.add("A형");
         ch.add("B형");
         ch.add("O형");
         ch.add("AB형");

    2) 메소드 :
       getSelectedItem();    //현재 무엇이 선택 되었는지 알아오는 것
       get와 set 는 대충 다 알아 둘것.

  1.6 List   // 플로우에서 정상적으로 동작
      - java.util.List과의 충돌을 피하기위해 절대 경로명을 사용해서 충돌을 피해 주어야 한다.
      import java.awt.*;
      import java.awt.List;  //이것만 유효하게 사용하겠다.

    1) 생성자 new List(intboolean);
        int : display rows //표시행수
        boolean : multiple selection  // 다중 선택

  1.7 TextField      // 글자를 적을 수 있는 한줄로 되어 있는 공간
    1) 생성자 :
        new TextField()
        new TextField(int)      // 영문알파벳 대문자 중 가장 큰 문자 기준으로 int개수만큼 들어갈 공간 할당
        new TextField(String)   // 텍스트 필드 생성 후 글자를 기본적으로 찍어 줌
        new TextField(Stringint)

    2) 메소드
        getText()               // 글자를 가져 올 때..
        setText(String)         // 글자를 집어 넣을 때..

  1.8 TextArea      //게시판 같은 곳 여러 라인을 적을 수 있는 것
    1) 생성자
        new TextArea();     // 스크롤바 자동으로 만들어짐
        new TextArea(intint);     // 행과 열을 지정해서 만듦
        new TextArea(String);       // 임의의 문자열이 Default로 들어 간다.
        new TextArea(Stringintint);

    2) 메소드
        getText();
        setText(String);        //원래 있던거 모두 지우고 새로 글자를 채움
        append(String);         //있는 글자 뒤에 새로운 글자만 추가함


//---------------------------------------------------------------------------//
// 수업중 소스
// Ex0116_01.java : BorderLayout 내에 Panel 삽입 후 Panel에 FlowLayout 삽입
import java.awt.*;
class Ex0116_01_Sub extends Frame {
    private Label lb = new Label("다음은 Message 입니다.");
    private Label lb1 = new Label("경고 : "Label.CENTER);
    private Button bt = new Button("자세히 >>");
    private Button bt1 = new Button("확인");
    private Button bt2 = new Button("취소");
    public Ex0116_01_Sub(String str) {
        super(str);
        //this.setTitle(str);
        this.setLayout(new BorderLayout());
        this.init();
        this.setSize(300200);
        this.setVisible(true);
    }

    public void init() {
        this.add("North", lb);  
        this.add("West", lb1);
        this.add("Center", bt);
        Panel p = new Panel();
        p.setLayout(new FlowLayout(FlowLayout.RIGHT));
        p.add(bt1);
        p.add(bt2);
        this.add("South", p);
    }
}
public class Ex0116_01 {
    public static void main(String[] ar) {
        Ex0116_01_Sub es = new Ex0116_01_Sub("Test");
    }
}

//---------------------------------------------------------------------------//
// Ex0116_02.java: 회원 가입 폼 작성
import java.awt.*;//List
import java.util.*;//List
import java.awt.List;
class Ex0116_02_Sub extends Frame{
    //West start
    private Label lb = new Label("등록된 사용자 List");
    private List li = new List(5false);
    private Button bt = new Button("신규가입");
    //West end
    //Center start
    //Cen-Nor start
    private Label lb1 = new Label("회원가입폼");
    //Cen-Nor end
    //Cen-West start
    private Label lb2 = new Label("이름 : "Label.RIGHT);
    private Label lb3 = new Label("주민번호 : "Label.RIGHT);
    private Label lb4 = new Label("생년월일 : "Label.RIGHT);
    private Label lb5 = new Label();
    private Label lb6 = new Label("주소 : "Label.RIGHT);
    //Cen-West end
    //Cen-South start
    private Button bt1 = new Button("등록");
    private Button bt2 = new Button("Clear");
    private Button bt3 = new Button("종료");
    //Cen-South end
    //Cen-Cen start
    private TextField tf = new TextField();
    private TextField tf1 = new TextField(6);
    private Label lb7 = new Label("-"Label.CENTER);
    private TextField tf2 = new TextField(6);
    private Choice ch = new Choice();
    private Label lb8 = new Label("년");
    private Choice ch1 = new Choice();
    private Label lb9 = new Label("월");
    private Choice ch2 = new Choice();
    private Label lb10 = new Label("일");
    private TextField tf3 = new TextField();
    //Cen-Cen end
    //Center end
    public Ex0116_02_Sub(String str){
        super(str);
        this.setLayout(new BorderLayout(55));
        this.init();
        this.pack();
        this.setVisible(true);
    }

    public void init(){
        //West
        Panel p = new Panel();
        p.setLayout(new BorderLayout());
        p.add("North", lb);
        p.add("Center", li);
        p.add("South", bt);
        this.add("West", p);
        //Center
        Panel p1 = new Panel();
        p1.setLayout(new BorderLayout());
        p1.add("North", lb1);
        Panel p2 = new Panel();
        p2.setLayout(new GridLayout(51));
        p2.add(lb2);
        p2.add(lb3);
        p2.add(lb4);
        p2.add(lb5);
        p2.add(lb6);
        p1.add("West", p2);
        Panel p3 = new Panel();
        p3.setLayout(new FlowLayout(FlowLayout.RIGHT));
        p3.add(bt1);
        p3.add(bt2);
        p3.add(bt3);
        p1.add("South", p3);
        Panel p4 = new Panel();
        p4.setLayout(new GridLayout(51));
        p4.add(tf);
        Panel p5 = new Panel();
        p5.setLayout(new BorderLayout());
        p5.add("West", tf1);
        p5.add("Center", lb7);
        p5.add("East", tf2);
        p4.add(p5);
        Panel p6 = new Panel();
        p6.setLayout(new BorderLayout());
        p6.add("Center", ch);
        p6.add("East", lb8);
        p4.add(p6);
        Panel p7 = new Panel();
        p7.setLayout(new GridLayout(12));
        Panel p8 = new Panel();
        p8.setLayout(new BorderLayout());
        p8.add("Center", ch1);
        p8.add("East", lb9);
        p7.add(p8);
        Panel p9 = new Panel();
        p9.setLayout(new BorderLayout());
        p9.add("Center", ch2);
        p9.add("East", lb10);
        p7.add(p9);
        p4.add(p7);
        p4.add(tf3);
        p1.add("Center", p4);
        this.add("Center", p1);
        
        this.initData();
    }

    public void initData(){
        for(char ch = 'a'; ch <= 'z'; ch++){
            li.add("" + ch + ch + ch);
        }
        for(int i = 1; i <= 12; i++){
            ch1.add(i + "");
        }
        for(int i = 1; i <= 31; i++){
            ch2.add(i + "");
        }
        Calendar ca = Calendar.getInstance();//객체
        int year = ca.get(Calendar.YEAR);
        for(int i = year; i >= 1900; i--){
            ch.add(i + "");
        }
    }
}

public class Ex0116_02{
    public static void main(String[] ar){
        Ex0116_02_Sub es = new Ex0116_02_Sub("회원가입폼");
    }
}

//---------------------------------------------------------------------------//
// 과제 : 아래와 같이 화면을 구성하시오