2011-02-08 12 views
1

ここにシナリオがあります。私は、たくさんのチェックボックスを持つスイングアプレットを持っています。それらのうちのいくつかは、別のものをチェックするときに無効にされ/チェックされない。各ItemStateChange()イベントは、変更のためにフォーム全体を解析するメソッドを実行します。マウスのクリックまたはsetSelected()コールのためにItemStateChange()イベントが発生したかどうかを確認する方法はありますか?実際にマウスがJavaのチェックボックスをクリックしたかどうかを確認できますか?

各チェックボックスについてItemStateChange()は標準パラメータjava.awt.event.ItemEvent evt

を持っている私は、ボックスをクリックしたときに一度だけprocessOrder()メソッドをコールしたいと思います。今は、変更がsetSelected()から起こったかどうかにかかわらず、それぞれの変更に対して発生します。 1回のクリックで10件以上の電話があった場合もあります。

+0

私はコメントする前に削除された回答がここにありました。それは 'if(evt.getStateChange()== ItemEvent.SELECTED){'を示しました。これは 'setSelected()'を使って状態を変更するときに 'parseForm()'へのメソッド呼び出しを妨げています。それはまさに私が望むものです。なぜ答えが削除されたのか分かりません – DewBoy3d

+0

詳細な検査の後、ボックスをオフにすると機能しません。私はそれが削除された理由を推測します... – DewBoy3d

答えて

1

イベントのソースがItemEventからのマウスクリックかsetSelectedコールかどうかを判断することはできません。

チェックボックスロジックにループがあるようです。イベントを処理するコントローラを追加し、各チェックボックスを設定すると、他のチェックボックスでsetSelectedを呼び出すことによって発生するイベントは無視されます。

+0

ループではなく、いくつかの 'ItemStateChange()'イベントのためにいくつかの呼び出しが行われました。 1つのチェックボックスが3つのチェックボックスの状態を変更すると、 'ItemStateChange()'がそれを呼び出すため、 'parseOrder()'が4回呼び出されます。 – DewBoy3d

1

マウスクリックまたはsetSelected()呼び出しによってItemStateChange()イベントがトリガされたかどうかを確認する方法はありますか?

アプリケーションを手動でするsetSelected()メソッドを呼び出した場合、あなたのようなコードを使用することができます:あなたは代わりのItemListenerののMouseListenerを使用してのmouseClickedに対応するために変更することができるならば(

checkBox.removeItemListener(...); 
checkBox.setSelected(...); 
checkBox.addItemListener(...); 
+0

アプリケーション全体には多くのペインとパネルにわたって数百のチェックボックスがあります。アプレットはNetBeansで作成され、コードジェネレータを使用してイベントハンドラを追加します。私は生成されたコードを編集することはできません。 NetBeansが私に与えるものは次のとおりです。 'cb1.addItemListener(new java.awt.event.ItemListener(){ ){cb1ItemStateChanged(evt); } }} ; ' 私はそれを再接続できるので、そこからメソッド名を取得できますか? – DewBoy3d

+2

これはGUIのモンスターのように聞こえる。いくつかの統合は助けになるだろうか?たとえば、いくつかの列にチェックボックスがあるJTableを使用している方が良いでしょうか?これは個人的な意見でもありますが、NetBeansで作成されたGUIのように私を恐れています。それらのコントロールを失うのは簡単です。 –

+0

残念ながら、私はJavaの初心者であり、このツールのために使用することを余儀なくされました。私の背景はC言語で書かれており、PHP、ASP、JSのWebスクリプトを使って作業します。それを再構築するのに時間がかかると、承認される可能性は低いです。これは本当に大きなGUIであり、NetBeans用ではない場合はできませんでした。私はわずか数プロセッササイクルを節約しようとしています。アプリケーション自体は、ほとんどの場合、完全です。 – DewBoy3d

1

)イベントでは、ユーザーが選択したチェックボックスのイベントのみが表示されます。

関連する問題