페이지

2015. 1. 20.

[JAVA] Day10. java.awt

java.awt


화면 구조를 만들때 주로 사용한다.
자바에서는 awt와 swing을 제공한다.
awt는 os의 환경에 따라 조금씩 변화한다.
swing 자바그래픽을 사용해서 똑같은 결과가 나온다
그러나 잘 안쓰인다 둘 다....

그러나 중요한 것은 이런 ui를 눌렀을때 일어나는 이벤트를 처리하는 방법을 익히자!




컨테이너와 컨퍼넌트

일종의 하나의 부품을 컨퍼넌트라고 할 수 있다.
컴퓨터 : 컨테이너
모니터, 램, cpu등등 : 컨퍼넌트라고 볼수 있다.


창이 컨테이너가 될수 있고, 그 안에 들어가는 버튼 채크박스 텍스트뷰가 컨퍼넌트가 될수 있다.

jsp는 컨테이너 랭귀지, java와 html은 컨퍼넌트 랭귀지



window는 매뉴와 타이틀이 제공하지 않음(올라가지 않음), 따라서 쓰이지 않는다.

window를 상속받는 Frame에서 제공한다.



import java.awt.*;

class FrameTest {
    public static void main(String args[]) {
        Frame f = new Frame("Login");// Frame객체를 생성한다. 타이틀도 삽입
        Button b1 = new Button("버튼");
        f.setSize(300, 200);    // Frame의 크기를 설정한다.
        f.add(b1);        // 화면에 버튼 생성
        f.setVisible(true);    // 생성한 Frame을 화면에 보이도록 한다.
    }
}


BorderLayout


특정 방향을 알리지 않았으면 센터가 디폴트
그리고 방향마다 하나만 올릴수 있다.


import java.awt.*;
class BorderLayoutTest {
    public static void main(String args[]) {
        Frame f = new Frame("BorderLayoutTest");
        f.setSize(200, 200); 
        f.setLayout(new FlowLayout());//상단으로 가운데 정렬
        Button north = new Button("North");
        Button south = new Button("South");
        Button east = new Button("East");
        Button west = new Button("West");
        Button center = new Button("Center");
        f.add(north, "North");        // f.add("North",north);와 같이 쓸 수도 있다.
        f.add(south, "South");        // South의 대소문자 정확히
        f.add(east, BorderLayout.EAST);        // East대신, BorderLayout.EAST 사용가능
        f.add(west, "West");
        f.add(center, "Center");
        f.setVisible(true);
    }
}




GirdLayout




바둑판식
레이아웃

import java.awt.*;
class GridLayoutTest {
    public static void main(String args[]) {
        Frame f = new Frame("GridLayoutTest");
        f.setSize(150, 150);
        f.setLayout(new GridLayout(3, 2)); // 3행 2열의 테이블을 만든다.
        f.add(new Button("1"));           // 추가되는 순서대로 Button에 번호를 붙였다.
        f.add(new Button("2"));
        f.add(new Button("3"));
        //f.add(new Button("4"));
        f.add(new Button("5"));
        f.add(new Button("6"));
        f.setVisible(true);
    }
}





Checkbox


import java.awt.*;

class CheckboxTest {
    public static void main(String args[]) {
        Frame f = new Frame("Questions");
        f.setSize(305, 250);

        // Frame의 LayoutManager를 FlowLayout으로 설정한다.
        f.setLayout(new FlowLayout());

        Label q1 = new Label("1. 당신의 관심 분야는?(여러개 선택가능)");
        Checkbox news = new Checkbox("news", true); // 선택된 상태로 생성
        Checkbox sports = new Checkbox("sports");
        Checkbox movies = new Checkbox("movies");
        Checkbox music = new Checkbox("music");
 
        f.add(q1); f.add(news); f.add(sports); f.add(movies); f.add(music);

        Label q2 = new Label("2. 얼마나 자주 극장에 가십니까?");
        CheckboxGroup group1 = new CheckboxGroup();
        //그룹으로 묵으면 라디오 버튼으로 바뀜
        Checkbox movie1 = new Checkbox("한 달에 한 번 갑니다.", group1, true);
        Checkbox movie2 = new Checkbox("일주일에 한 번 갑니다.", group1, false);
        Checkbox movie3 = new Checkbox("일주일에 두 번 갑니다.", group1, false);

        f.add(q2); f.add(movie1); f.add(movie2); f.add(movie3);

        Label q3 = new Label("3. 하루에 얼마나 컴퓨터를 사용하십니까?");
        CheckboxGroup group2 = new CheckboxGroup();
        Checkbox com1 = new Checkbox("5시간 이하 ", group2, true);
        Checkbox com2 = new Checkbox("10시간 이하", group2, false);
        Checkbox com3 = new Checkbox("15시간 이상", group2, false);

        f.add(q3); f.add(com1); f.add(com2); f.add(com3);
        f.setVisible(true);
    }
}


Choice



import java.awt.*;

class ChoiceTest {
    public static void main(String args[]) {
        Frame f = new Frame("Choice - Select");
        f.setSize(300, 200);
        f.setLayout(null);

        Choice day = new Choice();    // Choice객체를 생성한 다음
        day.add("SUN");                // Choice의 목록에 나타날 값들을 추가한다.
        day.add("MON");
        day.add("TUE");
        day.add("WED");
        day.add("THU");
        day.add("FRI");
        day.add("SAT");

        day.setSize(100, 50);
        day.setLocation(100, 70);

        f.add(day);
        f.setVisible(true);
    }
}





Color



import java.awt.*;
class ColorTest {
    public static void main(String args[]) {
        Frame f = new Frame("Color Test");
        f.setLayout(new GridLayout(14, 2));
        Panel p1 = new Panel();    p1.setBackground(Color.black);
        Panel p2 = new Panel();    p2.setBackground(Color.blue);
        Panel p3 = new Panel();    p3.setBackground(Color.cyan);
        Panel p4 = new Panel();    p4.setBackground(Color.darkGray);
        Panel p5 = new Panel();    p5.setBackground(Color.gray);
        Panel p6 = new Panel();    p6.setBackground(Color.green);
        Panel p7 = new Panel();    p7.setBackground(Color.lightGray);
        Panel p8 = new Panel();    p8.setBackground(Color.magenta);
        Panel p9 = new Panel();    p9.setBackground(Color.orange);
        Panel p10 = new Panel();p10.setBackground(Color.pink);
        Panel p11 = new Panel();p11.setBackground(Color.red);
        Panel p12 = new Panel();p12.setBackground(Color.white);
        Panel p13 = new Panel();p13.setBackground(Color.yellow);
        Panel p14 = new Panel();p14.setBackground(new Color(50,100,100));
        f.add(new Label("Color.black")); f.add(p1);
        f.add(new Label("Color.blue"));  f.add(p2);
        f.add(new Label("Color.cyan"));    f.add(p3);
        f.add(new Label("Color.darkGray"));    f.add(p4);
        f.add(new Label("Color.gray"));    f.add(p5);
        f.add(new Label("Color.green"));    f.add(p6);
        f.add(new Label("Color.lightGray"));    f.add(p7);
        f.add(new Label("Color.magenta"));    f.add(p8);
        f.add(new Label("Color.orange"));    f.add(p9);
        f.add(new Label("Color.pink"));        f.add(p10);
        f.add(new Label("Color.red"));        f.add(p11);
        f.add(new Label("Color.white"));        f.add(p12);
        f.add(new Label("Color.yellow"));        f.add(p13);
        f.add(new Label("Color(50, 100, 100)"));f.add(p14);
        f.setSize(250, 300);
        f.setVisible(true);
    }
}


List


import java.awt.*;

class ListTest {
    public static void main(String args[]) {
        Frame f = new Frame("List - Select");
        f.setSize(300, 200);
        f.setLayout(null);

        List selectOne = new List(6);      // 6개 목록을 보여줄 수 있는 크기의 List를 만든다.
        selectOne.setLocation(20,40);
        selectOne.setSize(100, 120);
        selectOne.add("Student");
        selectOne.add("Teacher");
        selectOne.add("Driver");
        selectOne.add("Computer Programmer");
        selectOne.add("Sales Man");
        selectOne.add("Musician");
        selectOne.add("Director");
       
        // 생성자의 두번째 인자값을 true로 설정해서 List의 목록에서 여러 개를 선택할 수 있게 했다.
        List selectMany = new List(6, true);
        selectMany.setLocation(150, 40);
        selectMany.setSize(100,120);
        selectMany.add("Student");
        selectMany.add("Teacher");
        selectMany.add("Driver");
        selectMany.add("Computer Programmer");
        selectMany.add("Sales Man");
        selectMany.add("Musician");
        selectMany.add("Director");

        f.add(selectOne);
        f.add(selectMany);
        f.setVisible(true);
    }
}




Scrollbar


import java.awt.*;

class ScrollbarTest {
    public static void main(String args[]) {
        Frame f = new Frame("Scrollbar");
        f.setSize(300, 200);
        f.setLayout(null);

        Scrollbar hor = new Scrollbar(Scrollbar.HORIZONTAL, 0, 50, 0, 100);
        hor.setSize(100, 15);
        hor.setLocation(60, 30);
        Scrollbar ver = new Scrollbar(Scrollbar.VERTICAL, 50, 20, 0, 100);
        ver.setSize(15, 100);
        ver.setLocation(30, 30);

        f.add(hor);
        f.add(ver);
        f.setVisible(true);
    }
}


TextArea


class TextAreaTest {
    public static void main(String args[]) {
        Frame f = new Frame("Comments");
        f.setSize(400, 220);
        f.setLayout(new FlowLayout());

        TextArea comments = new TextArea("하고 싶은 말을 적으세요.", 10, 50);
        //10줄 50칸

        f.add(comments);
        comments.selectAll();  // TextArea의 text 전체가 선택 되도록 한다.
        f.setVisible(true);
    }
}


TextField


import java.awt.*;

class TextFieldTest {
    public static void main(String args[]) {
        Frame f = new Frame("Login");
        f.setSize(400, 65);
        f.setLayout(new FlowLayout()); // LayoutManager를 FlowLayout으로 한다.

        Label lid = new Label("ID :", Label.RIGHT);    // 정렬을 오른쪽으로.
        Label lpwd = new Label("Password :", Label.RIGHT);

        TextField id = new TextField(10); //약 10개의 글자를 입력할 수 있는 TextField 생성
        TextField pwd = new TextField(10);
        pwd.setEchoChar('*');    // 입력한 값 대신 '*'가 보이도록 한다.

        f.add(lid);    // 생성한 컴포넌트들을 Frame에 포함시킨다.
        f.add(id);
        f.add(lpwd);
        f.add(pwd);
        f.setVisible(true);
    }
}


import java.awt.*;
import java.awt.event.*;
class TextFieldTest2 extends Frame {
    Label lid;
    Label lpwd;
    TextField tfId;
    TextField tfPwd;
    Button ok;
    TextFieldTest2(String title) {
        super(title); // Frame(String title)을 호출한다.
        lid = new Label("ID :", Label.RIGHT); // Label의 text정렬을 오른쪽으로.
        lpwd = new Label("Password :", Label.RIGHT);
        // 약 10개의 글자를 입력할 수 있는 TextField 생성.
        tfId = new TextField(10);   
        tfPwd = new TextField(10);
        tfPwd.setEchoChar('*'); // 입력한 값 대신 '*'이 보이게 한다.
        ok = new Button("OK");
        // OK버튼과 TextField에 이벤트처리를 위한 Listener를 추가해준다.
        tfId.addActionListener(new EventHandler());
        tfPwd.addActionListener(new EventHandler());
        ok.addActionListener(new EventHandler());
        setLayout(new FlowLayout()); // LayoutManager를 FlowLayout으로
        add(lid);    // 생성한 Component들을 Frame에 포함시킨다.
        add(tfId);
        add(lpwd);
        add(tfPwd);
        add(ok);
        setSize(450, 65);
        setVisible(true); // Frame이 화면에 보이게 한다.
    }
    public static void main(String args[]) {
        TextFieldTest2 f = new TextFieldTest2("Login");
    }
    class EventHandler implements ActionListener {
        public void actionPerformed(ActionEvent e){
            String id = tfId.getText();     // tfId에 입력되어있는 text를 얻어온다.
            String password = tfPwd.getText();
            if (!id.equals("java")){               
                System.out.println("입력하신 id가 유효하지 않습니다. 다시 입력해 주세요.");
                // id를 다시 입력할 수 있도록, focus를 tfId로 옮긴다.
                tfId.requestFocus();         
                tfId.selectAll();    // tfId에 입력된 text가 선택되게 한다.
            } else if (!password.equals("111")) {
                System.out.println("입력하신 비밀번호가 틀렸습니다. 다시 입력해 주시기 바랍니다.");
               
                             // id를 다시 입력할 수 있도록 focus를 tfId로 옮긴다.
                tfPwd.requestFocus();
                tfPwd.selectAll();
            } else {
                System.out.println( id + "님, 성공적으로 로그인 되었습니다.");
            }}} }