본문 바로가기
Technote/JAVA

9주차 4번문제

by Pooh0216 2009. 5. 9.

P9_4 강의자료에 나오는 ButtonTester 프로그램을 수정하여 화면에 두 개의 버튼이 보이게 하고 각 버튼의 이름을 A, B로 하시오. 버튼을 클릭할 때마다 클릭된 버튼이 어떤 것인가에 따라 "Button A was clicked 1 time(s)!", "Button A was clicked 2 time(s)!", ..., 혹은 "Button B was clicked 1 time(s)!", "Button B was clicked 2 time(s)!", ... 메시지가 프린트되게 하시오. 리스너 클래스를 하나만 정의하고 그 인스턴스도 한 개만 구성하여 두 버튼의 리스너로 등록하시오.

힌트: 리스너 클래스를 아래와 같이 ButtonTester 클래스의 main 메소드 내에 inner class 형태로 작성하면 됩니다.

class ClickListener implements ActionListener{

public void actionPerformed(ActionEvent e){

// ActionEvent 객체에는 이벤트에 관한 정보가 들어 있다.

// ActionEvent가 지원하는 getSource 메소드를 이용하여 이벤트 소스가 어디인지 알아낸다.

// getSource 메소드는 Object 타입을 반환하므로 JButton 타입으로 캐스팅

JButton source = (JButton) e.getSource();

if (source == buttonA)

System.out.println("Button A was clicked " + (countA++) + " time(s)!");

else if (source == buttonB)

System.out.println("Button B was clicked " + (countB++) + " time(s)!");

}

private int countA=1, countB=1;

}

buttonA와 buttonB는 main 메소드 내에 선언되는 지역변수들입니다. 이들을 inner class인 ClickListener 내에서 사용하려면 buttonA와 buttonB가 final로 선언되어야 합니다.


'Technote > JAVA' 카테고리의 다른 글

9주차 6번문제  (0) 2009.05.09
9주차 5번문제  (0) 2009.05.09
9주차 3번문제  (0) 2009.05.09
9주차 2번문제  (0) 2009.05.09
9주차 1번문제  (0) 2009.05.09