当前位置: 首页 > 知识库问答 >
问题:

MouseListener被另一个JPanel组件覆盖

计光赫
2023-03-14

程序屏幕截图

我正在制作动画。当我按下按钮时,它会触发一个动画,使JPanel从右侧浮动。当鼠标离开JPanel,JPanel会得到DeAnimated(JPanel退出动画),但问题是我在动画JPanel上有一个JButton。因此,当我将鼠标移出动画JPanel时,面板不仅会消失,而且当我在按钮(这是面板的一个组件)上移动鼠标时,面板也会消失,这意味着当我想单击按钮时,它会消失,因为当鼠标离开JPanel时,MouseExit就会被触发。

请看上面的图片,我在其中标记了某些区域。

    < li >是JPanel,当我将鼠标移到按钮上时,它会变成动画并消失。 < li >是使JPanel消失的按钮。 < li >是应该触发第一个JPanel定义的区域。

我已经试着解决这个问题很长时间了,但是我不能让它工作。如果你们能帮助我,我将不胜感激。谢谢!

共有1个答案

沙宣
2023-03-14

“但问题是我在动画JPanel上有一个JButton。

然后不要将按钮放在同一个面板上。学习使用布局管理器。对于您的图像,我会使用嵌套JGroups和BorderLayouts

右侧

JButton button = new JButton();
JPanel animatedPanel = new JPanel();

将它们添加到另一个JPanel

JPanel rightPanel = new JPanel(new BorderLayout());
rightPanel.add(button, BorderLayout.NORTH);
rightPanel.add(animatedPanel, BorderLayout.CENTER);

 /**      result       **/

       +-----+
       |     |
       |     |
       +-----+
       |     |
       |     |
       |     |
       |     |
       |     |
       +-----+

然后创建另一个JPanel来保存BigPanel和RightPanel

JPanel mainPanel = new JPanel(new BorderLayout());
JPanel leftBigPanel = new JPanel();
mainPanel.add(leftBigPanel, BorderLayout.CENTER);
mainPanel.add(rightPanel);

          /**       result       **/

         *--------------------+-----+
         |                    |     |
         |                    |     |
         |                    +-----+
         |                    |     |
         |                    |     |
         |                    |     |
         |                    |     |
         |                    |     |
         +--------------------+-----+

按钮不再与右侧动画面板重叠

    < li >注意:@覆盖JPanels中所需维度的< code>getPreferredSize()。
 类似资料:
  • 问题内容: 我有一个外部面板,在外部面板上有另一个jPanel。 如果我在内部面板上单击鼠标右键,则应该执行外部面板的右键单击操作。如果我确实在内部面板上单击鼠标左键,则应该发生其自身内部面板的点击动作。 是否可以将点击事件从一个面板传递到另一面板? 问题答案: 要解决此问题,您需要解决许多问题。 首先是要了解鼠标事件与创建它的组件有关,尤其是位置信息。单击点是相对于源组件x / y位置的偏移量(

  • 问题内容: 我在另一个内部的JPanel有问题。我不知道为什么,但是结果是一个简单的正方形,但是尺寸不正确。这是为什么? 问题答案: 您需要将panel3的布局也设置为null,否则将使用默认设置:

  • 我想在我的基本框架中添加一个带有JPanel的JScrollpane 如果我将带有的直接添加到中,就可以了。但是现在,当我将帧的大小减小到500像素以下时,变得更小,如第二张图片所示。 如何使JScrollPane工作?

  • 我想在一个JFrame中用另一个Jpanel替换一个Jpanel,我已经搜索并尝试了我的代码,但什么也没有发生,这是我的代码: 有人能帮帮我吗?多谢

  • 问题内容: 我正在做一个涉及JPanel中的鼠标和键监听器的小项目。不幸的是,当我使用鼠标/键盘时,没有一个方法被调用。我之前曾使用过JPanels / JFrame / JApplet和JComponents。代码片段如下所示: 偏离主题:我不断收到错误消息您的帖子似乎包含格式错误的代码。请使用代码工具栏按钮或CTRL + K键盘快捷键将所有代码缩进4个空格。要获得更多编辑帮助,请单击[?]工具

  • 我刚刚接触Java,正在为我的大学班级做一个项目。我正在开发一款百万富翁游戏,但是我被卡住了。 我有一个JFrame类,其中我有2个面板。第一个由按钮组成,第二个是我想通过按下按钮来更改的面板。按钮具有自己的类及其构造函数,面板也是如此,因为它们具有不同的布局。我需要在按钮类中创建一个方法,以从框架中删除第二个面板并添加第三个面板(在另一个更JPanel类中描述)。因此,从技术上讲,我需要从按钮类