Java-组件的某些区域仅可单击?
所以我的问题是,只有某些组件的某些区域是可点击的。我有这3门课:Java-组件的某些区域仅可单击?,java,components,region,clickable,Java,Components,Region,Clickable,所以我的问题是,只有某些组件的某些区域是可点击的。我有这3门课: TDUsersPanel—— TDSavedUsersPanel—— TDRegisterPanel—— 这是一幅所有这些在一起的图像: 但是,正如您所知,有一些粉红色区域(我在粉色区域中添加了这些区域),这些粉红色区域指示组件可以单击的位置。例如,如果查看“注册”按钮,您可能会注意到按钮顶部有一个粉红色区域,这意味着您只能单击粉红色区域边界内的按钮。你也可以在列表的最右边看到一个粉红色区域,表明它只在粉红色区域的范围内单击
——TDUsersPanel
——TDSavedUsersPanel
——TDRegisterPanel
System.out.println(registerButton.getBounds());
System.out.println(e.getPoint());
System.out.println(registerButton.getBounds().contains(e.getPoint()));
以下是一个示例输出:
java.awt.Rectangle[x=1,y=115,width=498,height=42]
java.awt.Point[x=383,y=47]
false
正如您所看到的,没有输出语句表示它在边界内。但这很奇怪,因为这个鼠标侦听器只添加到注册按钮,所以只有在你点击注册按钮时才会触发。但这是非常奇怪的,因为如果你比较从寄存器按钮的边界和你点击的点的y值,它们是非常不同的。您可以单击按钮的y值范围为115到157。但是y值表示鼠标位置在57,当然57<115。所以这里没有重叠问题,只是看起来有一个偏移问题。有人知道怎么解决这个问题吗
注:我想我只是注意到了一些东西;我只在寄存器面板上添加了一个鼠标侦听器,只在寄存器面板上添加了一个鼠标侦听器,我单击了寄存器面板的左上角(预计为0,0),但当它打印出点时,它是(3,30),这意味着有一个偏移量,由于这个偏移量,鼠标认为它不在某个地方,仅使顶部区域可单击。但是现在我知道了问题所在,我不知道如何解决这个问题。如果您有任何想法,我们将不胜感激。我认为您需要能够提出道歉,但这个问题已经解决。除此之外,你对我的问题有什么相关的评论吗?