我四处寻找我的问题,但找不到答案,所以我在这里:
我有一个 JLayeredPane,里面有 2 个 JPanel。
最深的(最下面)有 JButtons。
第二个(上面的那个)具有部分透明的背景颜色(尽管我认为这不会影响它)。
现在,当我将鼠标悬停在 JButton 上(位于另一个 JPanel 后面)时,它们仍然会向我添加到其中的 MouseListener 触发事件。我不知道为什么...
为什么会这样呢?我该怎么做才能让它停止?
在这里,我将两个面板添加到分层窗格中,这指的是扩展 JFrame 的类。
JLayeredPane layer = this.getLayeredPane();
layer.removeAll();
this.gamePanel = new GamePanel(game);
this.ghostPanel = new GhostPanel();
this.ghostPanel.setOpaque(true);
this.ghostPanel.setVisible(true);
layer.add(this.gamePanel, new Integer(0));
layer.add(this.ghostPanel, new Integer(1));
这里我有一些按钮(具有绝对布局)添加到最低面板
this.setLayout(null);
for (int j = 0; j < 5; j++) {
for (int i = 0; i < 5 + j; i++) {
this.add(this.buttons[i][j]);
}
}
for (int j = 1; j < 5; j++) {
for (int i = j; i < 9; i++) {
this.add(this.buttons[i][4 + j]);
}
}
这里这个指的是最底层的JPanel
这个的目的是一个叫做 gipf 的游戏,我采用的布局是绝对的,因为很难将所有东西都排列成六边形。
现在,当我将鼠标悬停在 JButtons (位于其他 JPanel 后面)上时,它们仍然向我添加到其中的 MouseListener 触发事件
当生成的事件需要传递给组件时,Swing 从父/子层次结构的底部向上搜索,直到找到想要处理该事件的组件。
我该怎么做才能让它停止?
Add a MouseMotionListener
到顶部面板来拦截诸如 mouseEntered/mouseExited 之类的事件。这样您仍然可以处理其他面板中的按钮单击。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)