ItemListenerのitemStateChangedメソッドに関して

最近JavaのTipsばっかりな今日この頃いかがお過ごしでしょうか(?

イベント処理でよく「ItemListenerインターフェース」を使うと思うのですが
イベントの変更(たとえば、コンボボックスを変更するときだったりとか、チェックボックスラジオボタンをON、OFFするときだったりとか)
のときに「ItemListenerインターフェース」をimplementsすることがあるけど、たとえば
『コンボボックスが変更されたらダイアログが出てOKボタンを押したら変更できる』とか
チェックボックスをONしたときにダイアログが出てOKボタンを押したら変更できる』とか
そういう処理が必要な場合があります。
ItemListenerのitemStateChangedは変更される前、された後二回呼び出されます。
そのためitemStateChangedのときに変更される前か、変更された後のStatus(状態)がわからない状態なので
二度ダイアログが出てしまうという状態になります。
この回避方法はItemEvent.SELECTEDで分岐できます

参考:http://java.sun.com/docs/books/tutorial/uiswing/events/itemlistener.html
//where initialization occurs
checkbox.addItemListener(this);
...
public void itemStateChanged(ItemEvent e) {
if (e.getStateChange() == ItemEvent.SELECTED) {
label.setVisible(true);
...
} else {
label.setVisible(false);
}
}

e.getStateChange() == ItemEvent.SELECTEDがFALSEなら変更される前、TRUEなら変更された後を表します。
つまり、FALSEのときにダイアログを出せばOK変更後は出ないという形になります。