将图像与鼠标单击关联

时间:2015-01-02 23:52:57

标签: java image swing jpanel mouseclick-event

JPanel中的图片与鼠标点击相关联的最佳方法是什么?我的意思是,API中是否有任何功能可以做到这一点?如果没有,那么最佳解决方案是什么?

顺便说一下,对于那些可能想知道为什么我在这个问题上寻求帮助的人,因为我正在做一个数独游戏,而我的代码已经随机生成了矩阵中的所有数字,检查解决方案是否正确,唯一尚未完成的是界面(用户选择一个正方形以便在那里选择一个数字)。 谢谢。

3 个答案:

答案 0 :(得分:2)

“最好”的方式?使用JLabel

另一种方法是使用自定义JPanel,它负责渲染单个图像并通过面板的paintComponent方法绘制它

一种“有趣”的方式,使用自定义JPanel绘制所有图片,维护某种List,其中每张图片与描述位置的Rectangle相关联图像的大小。单击面板后,循环遍历Rectangle List并使用contains的{​​{1}}方法确定鼠标事件是否发生在其中,使用索引Rectangle循环播放图片(或使用某种Rectangle来维护两者之间的链接)

您的工作取决于您想要做多少工作以及您打算实施哪些功能。

仔细看看:

答案 1 :(得分:0)

可点击图片会帮助您吗?

ImageView clickableImg = new ImageView(new Image(getClass().getResourceAsStream("graphics/image.png")));
Tooltip image_tooltip = new Tooltip("Maybe add a tooltip to it, as well");
Tooltip.install(clickableImg, image_tooltip);
//Turn the cursor into a hand when hovering over it, too
about.setStyle("-fx-cursor: hand;");
about.setOnMouseClicked(new EventHandler<MouseEvent>() {
    @Override
    public void handle(MouseEvent mouseEvent) {
        System.out.println("The image was clicked!");
    }
});

答案 2 :(得分:0)

嗯,你可以做这样的事情来确定鼠标点击是否在某个区域内(图像的边界):

public boolean isIn(int x,int y,int width,int height,int thex,int they){
    boolean b=
            thex>=x
            &&thex<=(x+width)
            &&they>=y&&
            they<=(y+height);
    //b=true;
    return b;
}

其中: x是左上角的x坐标 y是左上角的y坐标 width是图像的宽度 height是图像的高度

和x和y是鼠标点击的x和y坐标。

在确定鼠标的咔嗒声在哪个方格内后,您可以弹出一个以获取要放置的数字。