我只使用图像,我用来查看我的应用程序的窗口的尺寸在不同的系统上可能不同。我有一个鼠标动作监听器,它正在监听我的程序主视图上的点击。我有一个看起来像按钮的圆角矩形。我想让鼠标动作监听器只监听圆角矩形的区域,而不是所有系统上的整个图像。就像标题说的那样,不是整个图像都有内容,特别是角落看起来不像是图像的一部分,所以我不想让用户能够在没有内容的情况下点击图像的某些部分内容并获得与单击有内容的部分相同的结果。我的图像看起来与此类似(来源:youthedesigner.com)
所以我只希望程序在用户点击图像内的按钮而不是按钮周围的好东西时做一些事情。这就是我现在要收听点击的内容:
@Override
public void mouseClicked(MouseEvent e) {
for(int i = 0; i <= 200; i++) {
if(e.getY() >= 100+i && e.getY() <= 300) {
if(e.getX() >= 10+100-Math.pow(10000-(Math.pow((i-100),2.0)),.5)) && e.getX() <= 10+400-Math.pow(10000-(Math.pow((i-100),2.0)),.5))) {
// do stuff
i = 201;
}
}
}
}
我在我的代码中使用的数学方程看起来像 110-(10000-(y-100)^2)^(1/2)),如果用图表表示,它看起来像一个左括号,而 410+(10000- (y-100)^2)^(1/2)),它看起来像一个距离第一张图 400 个单位的右括号。
该代码在我的系统上运行良好,但在其他系统上,它根本不起作用,我很好奇如何移动我正在收听的位置以对应于图像的缩放方式。
非常感谢您提供的任何帮助。