Java-组件的某些区域仅可单击?

Java-组件的某些区域仅可单击?,java,components,region,clickable,Java,Components,Region,Clickable,所以我的问题是,只有某些组件的某些区域是可点击的。我有这3门课: TDUsersPanel—— TDSavedUsersPanel—— TDRegisterPanel—— 这是一幅所有这些在一起的图像: 但是,正如您所知,有一些粉红色区域(我在粉色区域中添加了这些区域),这些粉红色区域指示组件可以单击的位置。例如,如果查看“注册”按钮,您可能会注意到按钮顶部有一个粉红色区域,这意味着您只能单击粉红色区域边界内的按钮。你也可以在列表的最右边看到一个粉红色区域,表明它只在粉红色区域的范围内单击

所以我的问题是,只有某些组件的某些区域是可点击的。我有这3门课:

  • TDUsersPanel
    ——
  • TDSavedUsersPanel
    ——
  • TDRegisterPanel
    ——
这是一幅所有这些在一起的图像:

但是,正如您所知,有一些粉红色区域(我在粉色区域中添加了这些区域),这些粉红色区域指示组件可以单击的位置。例如,如果查看“注册”按钮,您可能会注意到按钮顶部有一个粉红色区域,这意味着您只能单击粉红色区域边界内的按钮。你也可以在列表的最右边看到一个粉红色区域,表明它只在粉红色区域的范围内单击它时,它的行为方式应该是这样的

我的问题是,为什么会这样?我希望它能像其他任何组件一样工作,我真的很好奇为什么它只能在这些特定区域正常反应。我曾考虑过可能存在某些组件重叠的可能性,但在围绕每个组件绘制边界后,肯定没有任何重叠

如果有人能帮我解决问题,并告诉我任何可能的解决方案,我们将不胜感激,谢谢

如果您还有其他问题,请随时提问

编辑:我有一个小小的发现;我尝试向按钮添加一个鼠标侦听器,并打印出按钮的边界以及单击的位置。然后,我添加了一个简单的if语句,说明如果按钮的边界包含我单击的点,则打印一个语句,例如:

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),这意味着有一个偏移量,由于这个偏移量,鼠标认为它不在某个地方,仅使顶部区域可单击。但是现在我知道了问题所在,我不知道如何解决这个问题。如果您有任何想法,我们将不胜感激。

我认为您需要能够提出道歉,但这个问题已经解决。除此之外,你对我的问题有什么相关的评论吗?