先日javaの勉強をはじめた初心者なのですが、javaのマウスイベントやキーイベントを同時にやろうとすると重くなってしまいます。 例えば、 テトリスのようなブロックがあり、 そのどれかを選んでマウスのカーソルに合わせて既存のマス目のある(14*14)ボード上に表示して、 上キーを押すと反転、左右キーを押すと押した方向に90度回転、 するという一連の動作に 1.ボタンにブロックの絵を表示してどれかを選ぶことでActionListenerを使って、イベントを実行して、 2.そのActionEventの中でMouseListenerを使ってMouseEnteredとMouseExitedを実行して、カーソルの位置の移動に合わせて、ボード上に選んだブロックを表示して、 3.更に、それらができてる状態で、KeyListenerからのKeyPressedで、上左右キーを押すことで任意の方向に回転できるようにしたくて 2までは、どうにか無駄な記述も多々あるだろうけどできました、が、3の記述をして、実行するととても重くなってしまいます。 あと、1,2の段階でほかのブロックを選びなおそうとしても、とたんに重くなってしまいます。 結構初心者の自分にとっては複雑な構造をしていて、たぶん無駄な記述が多くなってしまったり、Listenerの記述のタイミングが悪かったりなどが原因だと考えているのですが、 まったく解決方法が思いつきません。 あと、ブロックを選択してから、ボード上にマウスカーソルを移動して、カーソルの位置に合わせて選んだブロックを表示したいと書いてありましたが、 ボードにカーソルを移動したとたんに、以下のようなエラー?が大量発生します Exception in thread "AWT-EventQueue-0" java.lang.StackOverflowError at java.awt.AWTEventMulticaster.mouseExited(Unknown Source) at java.awt.AWTEventMulticaster.mouseExited(Unknown Source) at java.awt.AWTEventMulticaster.mouseExited(Unknown Source) 以下ほぼ無限ループ。 簡単なlisetenerとeventの使い方しか勉強していないので、さっぱりでございます。 たぶんこのエラーも重くなっている原因の一つだとおもっていますが、、、、、、、、 詳しい方、エラー含め、解決方法、改善方法等、教えていただけませんでしょうか?? 情報不足だった場合、必要な物を教えていただければ、わかる範囲で追記します。 ヒントでも推測でもいいです。ここまで来て挫けたくないです><。 助けてください~><。
↧