• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:jCheckBoxの動作について。)

jCheckBoxの動作について

このQ&Aのポイント
  • jCheckBoxの動作について調査しています
  • jCheckBoxをクリックすると、jCheckBox1_stateChanged()が5回実行されます
  • Applet1クラスでjCheckBoxを作成し、その状態変化を監視しています

質問者が選んだベストアンサー

  • ベストアンサー
  • lawson
  • ベストアンサー率44% (29/65)
回答No.1

ごめんなさい。 なぜ、5回実行されるのかは、わかりません。 Swingにはよく、バグがあったりするようです。 JAVAのGUI周りはどうも、挙動不信なところをがあって、 バグもたくさんあります。 今回のがバグかどうかは知りません。 それなりに理由があるかもしれないですが・・。私にはわかりません。 googleで調べてもなかなか答えを見出せない時が多いですね。 J2EE関連のほうに比べて、知っている人が少ないのかもしれない・・。 とはいえ、 チェックボックス1回につき1回の実行にしたいのであれば 解決策はあります。 私がもし納期に迫られているのであれば、 以下の解決策をとります。 Applet1_jCheckBox1_changeAdapterクラスに 以下のコードを追加します。 (1) private boolean previousState; というフィールドをひとつ追加する。 (2) stateChangedを変更する (変更前) public void stateChanged(ChangeEvent e) { adaptee.jCheckBox1_stateChanged(e); } (変更後) public void stateChanged(ChangeEvent e) { boolean nowState = ( (JCheckBox)e.getSource() ).isSelected(); if( previousState == nowState ) { return; } adaptee.jCheckBox1_stateChanged(e); previousState = nowState; } 以上。 これで、チェックボックスを1回押すごとに、1回だけ jCheckBox1_stateChanged( が呼ばれます。 こんなので、回答になったでしょうか。

ssi77
質問者

お礼

返答ありがとうございます。 自己解決できまして、イベントを stateChangedではなく、itemStateChangedになおしたら、思ったとおりの動作をするようになりました。 丁寧な返答ほんとにありがとうございました。

その他の回答 (2)

  • kacchann
  • ベストアンサー率58% (347/594)
回答No.3

>jCheckBox1_stateChanged()がcheckboxを1クリックにつき、5回実行されている。 (メッセージが5回表示される) なぜでしょうか? まず間違いなく、 「ChangeEventが1クリックに付き5回、発生しているから」 でしょう。

  • lawson
  • ベストアンサー率44% (29/65)
回答No.2

NO1です >(1) >private boolean previousState; >というフィールドをひとつ追加する。 ですが、これの previousStateの初期値は jCheckBox1の初期と同じになるようにしといてくださいね。 private boolean previousState; を private boolean previousState = jCheckBox1.isSelected(); にするなり・・。そこらへんはうまくあわすという前提で・・ 以上です。

ssi77
質問者

お礼

返答ありがとうございます。 NO.1さんのお礼のところに書いたとおりです。 StateChangedの仕様はこれから調査したいと思っています。

関連するQ&A