-
텍스트 창 입력기JAVA/GUI - Frame 2020. 10. 1. 10:53
구현할 것
텍스트 입력창, 버튼, 레이블을 만들고 버튼을 클릭하면 텍스트 입력창 내용이 레이블에 나오도록 해보고
exit 버튼을 클릭하면 윈도우 창이 닫힌다.
예시
아래는 입력 전의 모습
아래는 입력하고 난 후에 send Message 버튼을 누르면 레이블에 입력한 내용이 나온다.
외형 구현
프로그램 살행결과
소스 파일
버튼의 기능 구현
(1). 익명을 통해 구현
(2). SimpleInput클래스가 인터페이스 상속을 통해 구현
(3). 별 개의 클래스를 만들어서 인터페이스 상속을 통해 구현
위의 세 구현 방식에 동일하게 아래의 내용을 임포트 해줘야 한다.
(1). 익명을 통해 구현
SimpleInput 클래스의 생성자에서 각 버튼에 대한 이벤트를 등록한다.
위의 문장에 대해 분석해보면, ActionListener 에서 this는 ActionListener 객체를 의미한다.
그렇기 때문에 SimpleInput의 각 버튼에 대해 접근하려면 this를 쓰지 못한다.
그래서 SimpleInput.this.send 혹은 SimpleInput.this.exit를통해 각 버튼에 대해 접근을 해야 한다.
(1) 구현 소스 파일
(2). SimpleInput클래스가 인터페이스 상속을 통해 구현
SimpleInput 클래스가 직접 ActionListener 인터페이스를 상속을 받도록 한다.
위에서 SimpleInput 클래스가 붉은 글씨로 나타나는데 그 이유는 ActionListener가 인터페이스라서
이 인터페이스의 추상 메소드들을 재정의 해주지 않아서 그런 것이다.
이 추상 메소드를 정의해보자.
그리고 아래는 SimpleInput 클래스의 생성자에서 각 버튼들의 이벤트를 등록하는 부분이다.
위의 addActionListener함수의 매개변수는 ActionListener를 요구하는데
SimpleInput 클래스가 ActionListener인터페이스를 상속하므로 this를 전달한다.
(2) 구현 소스 파일
(3). 별 개의 클래스를 만들어서 인터페이스 상속을 통해 구현
(3)의 방식은 (2)의 방식과 동일한데, SimpleInput 클래스가 ActionListener를 상속하지 않고
별개의 클래스를 만들어서 이 클래스가 ActionListener를 상속받아 이 각 버튼이 눌렸을 때의 기능을 구현한다.
SimpleInput클래스의 필드(멤버 변수)들을 public으로 잠시 변경하도록 하자.
그 이유는 나중에 설명한다.
그리고 별 개의 클래스 명을 ButtonEvent라 하고, 버튼이 눌렸을 때의 기능을 구현한다.
여기서 필드로 SimpleInput 객체를 하나 선언한다.
그 이유는 버튼들이 이 객체에 있기 때문에 이 객체에 접근해서 버튼들을 제어해야하기 때문이다.
그리고 이 클래스 내에서 이 버튼들을 접근하기 위해서 SimpleInput의 필드들이 모두 public으로 되어있어야 한다.
SimpleInput 클래스의 생성자에서 각 버튼들의 이벤트를 등록하는 부분이 아래이다.
(3) 구현 소스 파일
'JAVA > GUI - Frame' 카테고리의 다른 글
컨테이너(Container) & 캔버스(Canvas) (0) 2020.10.12 텍스트 입력 창과 다이얼 로그 창 만들기 (0) 2020.10.01 카드 레이 아웃(CardLayout) 만들기 (0) 2020.10.01 FlowLayout사용법, GridLayout사용법,BorderLayout사용법 (0) 2020.10.01 Menu사용법, Dialog사용법, Checkbox사용법 (0) 2020.10.01