0

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;

}

4

1 に答える 1

1

まさに @MadProgrammer がコメントしたもの - あなたがそれを呼び出すと、それ自体があなたDisplayUtilities.display(mbfImg, imgFrame);の中に を作成します。ImageComponentJFrameMouseListener

ただし、 aMouseListenerをに直接追加できるはずです。ImageComponent

于 2015-07-11T10:12:41.623 に答える