gpt4 book ai didi

java - OpenImaj - 将 MouseListener 与 JFrame 结合使用

转载 作者:行者123 更新时间:2023-12-01 11:20:05 25 4
gpt4 key购买 nike

我正在尝试向显示 MBFImage 的 JFrame 添加鼠标监听功能,但鼠标事件绝对不执行任何操作。我不确定事件是否没有触发,或者是否因为我做错了什么而没有被捕获......

图像在 JFrame 中显示得很好,但是在图像上移动鼠标、单击、移动、拖动等不会产生任何 Activity 。

注 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;

}

最佳答案

正是 @MadProgrammer 评论的 - 当您调用 DisplayUtilities.display(mbfImg, imgFrame); 时,它会在您的 JFrame 内创建一个 ImageComponent ,本身就是一个MouseListener

但是,您应该能够直接将 MouseListener 添加到 ImageComponent 中。

关于java - OpenImaj - 将 MouseListener 与 JFrame 结合使用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31350743/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com