0

次のイベントを検出したいJPanelがあります

(1) マウス移動時

(2) マウスアウト時

(1)は簡単です。(2) ちょっと難しいです。現在、JPanel 周辺のすべてのコンポーネントでイベントを登録する必要があります。JPanel の周囲の隣人がイベントでマウスの動きを検出した場合、これは JPanel が (2) の状況にあることも意味します。ただし、これはかなり汚れています。将来、新しいコンポーネントを追加すると、この汚れた回避策が壊れます。

もう 1 つの方法は、タイマーを使用して JPanel を監視することです。マウスの位置が x 秒以内に JPanel 内にない場合、JPanel でマウス移動イベントが発生していると見なすことができます。

ただし、このような一般的なタスクを実行するために別のタイマーを使用するのはやり過ぎなので、これも私には汚い方法に思えます。

Javaプラットフォームが提供するより良い方法はありますか?

4

1 に答える 1

6

クラスにMouseListenerを実装させ、最も外側のパネルにマウスリスナーとして追加します。マウスがパネル上を移動するとマウス入力イベントが発生し、パネルから離れるとマウス終了イベントが発生します。パネルに含まれるコンポーネントに関係なく。

JavaDocから:

void mouseEntered(MouseEvent e)マウスがコンポーネントに入ると呼び出されます。

void mouseExited(MouseEvent e)マウスがコンポーネントを終了するときに呼び出されます。

于 2009-05-14T06:54:55.080 に答える