ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 텍스트 창 입력기
    JAVA/GUI - Frame 2020. 10. 1. 10:53

    구현할 것

    텍스트 입력창, 버튼, 레이블을 만들고 버튼을 클릭하면 텍스트 입력창 내용이 레이블에 나오도록 해보고

    exit 버튼을 클릭하면 윈도우 창이 닫힌다.

     

    예시

    아래는 입력 전의 모습

    아래는 입력하고 난 후에 send Message 버튼을 누르면 레이블에 입력한 내용이 나온다.

     

    외형 구현

    프로그램 살행결과

    소스 파일

    SimpleInputTest.java
    0.00MB

     

    버튼의 기능 구현

    (1). 익명을 통해 구현

    (2). SimpleInput클래스가 인터페이스 상속을 통해 구현

    (3). 별 개의 클래스를 만들어서 인터페이스 상속을 통해 구현

     

    위의 세 구현 방식에 동일하게 아래의 내용을 임포트 해줘야 한다.

     

    (1). 익명을 통해 구현

    SimpleInput 클래스의 생성자에서 각 버튼에 대한 이벤트를 등록한다.

    위의 문장에 대해 분석해보면, ActionListener 에서 this는 ActionListener 객체를 의미한다.

    그렇기 때문에 SimpleInput의 각 버튼에 대해 접근하려면 this를 쓰지 못한다.

    그래서 SimpleInput.this.send 혹은 SimpleInput.this.exit를통해 각 버튼에 대해 접근을 해야 한다.

     

    (1) 구현 소스 파일

    SimpleInputTest.java
    0.00MB

     

    (2). SimpleInput클래스가 인터페이스 상속을 통해 구현

    SimpleInput 클래스가 직접 ActionListener 인터페이스를 상속을 받도록 한다.

    위에서 SimpleInput 클래스가 붉은 글씨로 나타나는데 그 이유는 ActionListener가 인터페이스라서

    이 인터페이스의 추상 메소드들을 재정의 해주지 않아서 그런 것이다.

    이 추상 메소드를 정의해보자.

    그리고 아래는 SimpleInput 클래스의 생성자에서 각 버튼들의 이벤트를 등록하는 부분이다.

    위의 addActionListener함수의 매개변수는 ActionListener를 요구하는데

    SimpleInput 클래스가 ActionListener인터페이스를 상속하므로 this를 전달한다.

     

    (2) 구현 소스 파일

    SimpleInputTest.java
    0.00MB

     

    (3). 별 개의 클래스를 만들어서 인터페이스 상속을 통해 구현

    (3)의 방식은 (2)의 방식과 동일한데, SimpleInput 클래스가 ActionListener를 상속하지 않고

    별개의 클래스를 만들어서 이 클래스가 ActionListener를 상속받아 이 각 버튼이 눌렸을 때의 기능을 구현한다.

    SimpleInput클래스의 필드(멤버 변수)들을 public으로 잠시 변경하도록 하자.

    그 이유는 나중에 설명한다.

    그리고 별 개의 클래스 명을 ButtonEvent라 하고, 버튼이 눌렸을 때의 기능을 구현한다.

    여기서 필드로 SimpleInput 객체를 하나 선언한다.

    그 이유는 버튼들이 이 객체에 있기 때문에 이 객체에 접근해서 버튼들을 제어해야하기 때문이다.

    그리고 이 클래스 내에서 이 버튼들을 접근하기 위해서 SimpleInput의 필드들이 모두 public으로 되어있어야 한다.

    SimpleInput 클래스의 생성자에서 각 버튼들의 이벤트를 등록하는 부분이 아래이다.

    (3) 구현 소스 파일

    SimpleInputTest.java
    0.00MB

     

    댓글

Designed by Tistory.