2010-01-21 7 views
1

Java 용 GUI 빌더를 포기하고 이제는 코드에서 완전히 개발했습니다. 몇 시간 동안 연습하면 정말 어렵지 않습니다. 이제 이벤트 처리를 다루고 있습니다.Java에서 이벤트 처리 : 빈 이벤트 핸들러가 필요합니까?

하지만 클래스를 사용하여 리스너 유형을 구현하려고 시도 할 때가 있습니다. 내가 필요하지 않은, 또는 내가이 추상 클래스하지 말 편집기에서 nastygram을받을 경우에도의 focusLost을 위해 (위)을 빈 액션 핸들러를 제공해야합니다

private class TextAction implements FocusListener 
{ 
    public void focusGained(FocusEvent e) 
    { 
     responseTxt.setText("Got focus"); 
    } 

    public void focusLost(FocusEvent e) 
    { 

    } 

} FocusLost 메서드 등을 재정의하지 않습니다.

즉, 동작 처리기는 프로그램에서 동작을 사용하지 않을 때도 수신기와 연결된 각 이벤트 유형에 대한 동작 처리기를 표시해야합니까?

감사합니다.

답변

4

JDK에는 모든 표준 리스너 인터페이스에 대한 기본 클래스가 이미 있습니다. 이러한 클래스는 인터페이스의 모든 메서드를 구현하지만 메서드 본문에는 아무 것도 수행하지 않습니다. 인터페이스 이름을 XyzListener에서 XyzAdapter로 변경하면됩니다. 이 어댑터와

당신은 단지 당신이 정말로 필요로하는 메소드를 오버라이드 (override) 할 필요가 :

private class TextAction extends FocusAdapter 
{ 
    @Override 
    public void focusGained(FocusEvent e) 
    { 
     responseTxt.setText("Got focus"); 
    } 
} 
+1

거기에 @Override를 추가하시는 것이 좋습니다. –

+0

물론 네 말이 맞다. – x4u

2

Java의 "이벤트"시스템은 기본적으로 해킹 된 후속 작업입니다.

관련된 인터페이스에 특별한 것은 없습니다. 모든 인터페이스처럼 모두 메소드를 구현해야합니다.

일부 메소드 만 구현하려는 경우, 대체하지 않기로 선택한 항목에 대한 기본 무효화 구현을 제공하는 연관된 어댑터 클래스에서 상속 할 수 있습니다.

+1

꽤 언급하지 않았다 그 군더더기로에 압정으로 고정의는 C#에서처럼 단순히 (언어 기능을 일부가 아닌). – cletus

+0

아마 내 말씨가 조금 강하다. 내가 실제로 얻는 것은 언어의 특별한 지원이 없다는 것입니다. –

관련 문제