[JAVA] AWT

Posted by 신희준 on August 30, 2017


2017 - 08 - 30 (수)

  • AWT

  • 참고 도서 : 자바의 정석(남궁성 저, 도우출판)


    1 . AWT


    AWT ?


    AWT(Abstract Window Toolkit)은 이름에서 알 수 있듯이 Window프로그래밍(GUI프로그래밍)을 하기 위한 도구이다. AWT는 GUI어플리케이션의 개발에 필요한 여러 개의 관련 패키지와 클래스의 집합으로 구서오디어 있으며, 이들을 이용하면 윈도우와 같은 GUI어플리케이션을 쉽고 편리하게 작성할 수 있다.

    최근 발전한 Front-end단의 프로그래밍언어들의 발전으로 AWT를 많이 사용하지 않는다고는한다. 하지만 AWT와 후에 학습할 안드로이드가 관련이 있다고 하니 알아둘 필요가 있다.


    AWT로 로그인 화면 구성하기

    Frame 오브젝트 : 컨테이너를 만들어준다.

    - setSize() : Frame 의 사이즈를 지정해준다.
    - setVisible(true) : Frame을 가시화한다.
    - setLayout() : Frame의 배치방법을 정해준다.
    - add() : Frame에 컴포넌트들을 추가해준다. ex) 버튼이나 라벨, 텍스트필드 등

    Label 오브젝트 : 제목 같은 것이다. 어떠한 텍스트필드에 제목을 지정해준다.
    Button 오브젝트 : 이벤트를 발생시켜주는 매개체 역할을 할 것이다.
    TextFiled 오브젝트 : 텍스트 입력창이다.

    - setBounds() : 해당 Label을 컨테이너의 특정 좌표에 위치시켜준다.
    - 이외에도 배치 및 사이즈에 관련한 메서드들 존재한다.

    package View;
    import java.awt.Button;
    import java.awt.Frame;
    import java.awt.Label;
    import java.awt.TextField;
    
    public class Resister {
    		public Resister(){
    		Frame frame = new Frame("register"); // register 라는 이름의 frame을 하나만들어줌
    		frame.setSize(1000, 1000);
    		frame.setVisible(true);
    		Button bt = new Button("로그인");
    		Button bt1 = new Button("회원가입");
        //로그인 버튼과 회원가입 버튼을 만들어주기위해 버튼 두개 생성
    		frame.setLayout(null);
    		Label lid = new Label ("ID:", Label.RIGHT);
    		Label lid1 = new Label ("PASSWORD:", Label.RIGHT);
    		TextField tfiled = new TextField(15); // id
    		TextField tfiled1 = new TextField(15); // pw
    		frame.add(bt);
    		bt.setBounds(150, 400, 150, 30);
    		frame.add(bt1);
    		bt1.setBounds(350, 400, 150, 30);
    		frame.add(lid);
    		lid.setBounds(100, 100, 150, 30);
    		frame.add(lid1);
    		lid1.setBounds(100, 150, 150, 30);
    		frame.add(tfiled);
    		tfiled.setBounds(250, 100, 150, 30);
    		frame.add(tfiled1);
    		tfiled1.setBounds(250, 150, 150, 30);
    	}
    }
    

    이벤트 처리


    위에서 만들어준 로그인 Frame 에서 버튼을 눌렀을 때 혹은 종료 버튼을 눌렀을 때 어떠한 동작을 할 필요가 있다.


    WindowEvent (WindowAdapter 오브젝트)

    //종료이벤트 (WindowEvent)
    
    import java.awt.event.WindowAdapter;
    import java.awt.event.WindowEvent;
    
    public class WindowController extends WindowAdapter {
    	@Override
    	public void windowClosing(WindowEvent e) {
    		System.exit(0);
    	}
    }
    //위에 로그인화면을 구현한 Frame에 아래 WindowController 객체를 추가해준다.
    WindowController wc=new WindowController();
    


    ActionListener 인터페이스

    //위에서 bt객체(로그인버튼)을 눌렀을 때 콘솔에 "로그인 눌림"이라고 출력한다.
    public class ResisterEvent implements ActionListener {
    	Resister Re;
    	public ResisterEvent(Resister Re) {
    		this.Re = Re;
    	}
    	@Override //ActionListenr 의 actionPerformed() 메소드를 재정의해준다.
    	public void actionPerformed(ActionEvent e) {
    		if (e.getSource().equals(Re.bt)) {
    			System.out.println("로그인 눌림");
    		}
    	}
    }
    
    //위에 로그인 화면을 구현한 Frame의 로그인 버튼에 addActionListern() 메소드로  ActionListener인터페이스를 상속받은 ResisterEvent 객체를 넣어준다.
    ResisterEvent re = new ResisterEvent(this);
    bt.addActionListener(re);