2014-09-17 2 views
2

new ActionEvent을 만들 때는 정수를 id으로 입력해야합니다. 설명서에 다음 내용이 나와 있습니다.ActionEvent가 ID를 요청하는 이유는 무엇입니까?

이벤트를 식별하는 정수입니다. 허용 값에 ​​대한 자세한 내용은 ActionEvent

의 클래스의 설명과의 ActionEvent의 클래스의 설명을 참조 말한다 : 특정 ActionEvent 인스턴스의 id 매개 변수가 아닌 경우

지정되지 않은 동작이 발생한다 ACTION_FIRST에서 ACTION_LAST까지입니다.

내 혼란이 ACTION_FIRSTACTION_LAST의 값으로 제공 : 항상없는 동작 않을까 1001이, 왜 심지어 그것을 필요로 발생해야합니다

/** 
* The first number in the range of ids used for action events. 
*/ 
public static final int ACTION_FIRST    = 1001; 

/** 
* The last number in the range of ids used for action events. 
*/ 
public static final int ACTION_LAST     = 1001; 

id 경우?

+1

"새 ActionListener"를 만들 때 - 아마도'ActionEvent'를 의미합니까? –

+0

@JeffreyBosboom 예, 죄송합니다. 고정 – Supuhstar

답변

2

ActionEventAWTEvent의 하위 클래스이며, id의 소유자입니다.

  • 을 AdjustmentEvent.ADJUSTMENT_VALUE_CHANGED ItemEvent.ITEM_STATE_CHANGED ActionEvent.ACTION_PERFORMED : ActionEvent의 생성자는 단순히 슈퍼 (...)는 다음 중 하나입니다 것을 확인 슈퍼의 생성자에 ID를 전달합니다 TextEvent.TEXT_VALUE_CHANGED

그래서, ActionEvent 그 슈퍼는 그에서 ActionEvent.ACTION_PERFORMED를 얻을 수 있도록하고 싶어 어디 ACTION_PER FORMED는 ACTION_FIRST로 설정된 상수).

+1

아마도 공식 필드에 따라 id 필드가 ACTION_FIRST와 ACTION_LAST 사이에 있어야하지만 두 상수는 모두 1001이어야합니다. – MarsAtomic

+0

IMHO 이것은 좋지 않은 디자인이었습니다. 수퍼 클래스는 서브 클래스에 관해서는 알지 못합니다. 내 생각에 그들은 super에 전달하기 전에 입력을 검사하는 범위를 원했지만 (superb로 구현되지 않은 것처럼 보이지만) super는 sub에서 한 종류 만 기대하기 때문에 최대 값과 최소값은 동일합니다. 아마도 클래스의 이전 버전에서는 로직에서 남은 것이지만, 상수이기 때문에 이전 버전과의 호환성을 원했기 때문에이를 제거 할 수 없었습니다. 그냥 추측. – splungebob

+0

@splungebob 그렇다면 왜 'super'에'ACTION_PERFORMED'를 전달하지 않고 생성자에서 절대 요청하지 않습니까? – Supuhstar