MBFImage を表示する JFrame にマウス リスニング機能を追加しようとしていますが、マウス イベントはまったく何もしません。イベントが発生していないのか、何か間違ったことをしているためにイベントが発生していてキャッチされていないのかどうかはわかりません...
画像は JFrame に問題なく表示されますが、画像上でマウスを動かしたり、クリック、移動、ドラッグなどを行っても、何の動作も発生しません。
注1マウスリスナーをJPanelに追加してから(この特定の順序で)画像を描画し、JPanelをJFrameに追加すると、マウスリスナーはイベントをキャッチしますが、画像。サイズを変更する必要がある最小サイズのウィンドウを描画します。画像上でマウスを動かしても、イベントが発生/キャッチされないようです。
注 2パネルを JFrame に追加して画像を描画すると、ウィンドウ サイズは問題ありませんが、マウス リスナーは機能しなくなります。
誰でも光を当てることができますか?
私のコードの関連部分は次のとおりです。
private JFrame displayImage(final MyAppImage image, final MyAppImage.DetectLevel level, String title) {
MBFImage mbfImg = image.drawDetections(level); //draws face detection boxes
JFrame imgFrame = new JFrame(title);
DisplayUtilities.display(mbfImg, imgFrame);
imgFrame.addMouseListener(new MouseListener() {
@Override
public void mouseClicked(MouseEvent e) {
}
@Override
public void mousePressed(MouseEvent e) {
}
@Override
public void mouseReleased(MouseEvent e) {
}
@Override
public void mouseEntered(MouseEvent e) {
System.out.println("here");
if (level == MyAppImage.DetectLevel.filtered) {
if (image.checkPoints(e.getX(), e.getY(), level) != null) {
System.out.println("YES");
}
else {
System.out.println("NO!");
}
}
else {
System.out.println("Huh?");
}
}
@Override
public void mouseExited(MouseEvent e) {
}
});
imgFrame.addMouseMotionListener(new MouseMotionListener() {
@Override
public void mouseDragged(MouseEvent e) {
System.out.println("hello");
}
@Override
public void mouseMoved(MouseEvent e) {
System.out.println("here");
if (level == MyAppImage.DetectLevel.filtered) {
if (image.checkPoints(e.getX(), e.getY(), level) != null) {
System.out.println("YES");
}
else {
System.out.println("NO!");
}
}
else {
System.out.println("Huh?");
}
}
});
return imgFrame;
}