将JPanel
中的图片与鼠标点击相关联的最佳方法是什么?我的意思是,API中是否有任何功能可以做到这一点?如果没有,那么最佳解决方案是什么?
顺便说一下,对于那些可能想知道为什么我在这个问题上寻求帮助的人,因为我正在做一个数独游戏,而我的代码已经随机生成了矩阵中的所有数字,检查解决方案是否正确,唯一尚未完成的是界面(用户选择一个正方形以便在那里选择一个数字)。 谢谢。
答案 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坐标。
在确定鼠标的咔嗒声在哪个方格内后,您可以弹出一个以获取要放置的数字。