gpt4 book ai didi

java - MouseMotionListener 事件不会在屏幕的某些区域触发

转载 作者:行者123 更新时间:2023-11-29 08:47:04 28 4
gpt4 key购买 nike

下面的类(class)演示了我在 FSEM 中使用 MouseMotionListeners 时遇到的问题。

public class TestGUI extends JFrame {

Panel panel;

public TestGUI()
{
panel = new Panel();
GraphicsDevice gd = GraphicsEnvironment.getLocalGraphicsEnvironment().getDefaultScreenDevice();
gd.setFullScreenWindow(this);
setVisible(false); // use the workaround to the Mac OS X FSEM bug where mouseMotionListeners don't work right away
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
getContentPane().add(panel);
setVisible(true);
}

class Panel extends JPanel
{
public Panel()
{
addMouseMotionListener(new MouseAdapter() {
@Override
public void mouseMoved(MouseEvent e)
{
Toolkit.getDefaultToolkit().beep();
}
});
setVisible(true);
}
}

public static void main(String[] args) {
new TestGUI();
}
}

问题是这样的:由于事件处理程序中的 Toolkit.getDefaultToolkit().beep(); 调用,我可以清楚地听到 mouseEvent 何时触发。对于屏幕的大部分区域,事件处理程序都可以正常工作,除了通常具有 Mac OS X dock 的屏幕区域。 .我通过将扩展坞固定到屏幕的各个侧面来确认这一点,并且“死区”更改为我将扩展坞固定在屏幕的一侧。有解决办法吗?

我的设置:

Java 版本:1.7.0_55。

Mac OS X 版本:10.8.5。

最佳答案

问题解决了。解决方案是在将框架设置为全屏窗口之前设置框架 undecorated(true);

public TestGUI()
{
panel = new Panel();
GraphicsDevice gd = GraphicsEnvironment.getLocalGraphicsEnvironment().getDefaultScreenDevice();
setUndecorated(true);
gd.setFullScreenWindow(this);
setVisible(false); // use the workaround to the Mac OS X FSEM bug where mouseMotionListeners don't work right away
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
getContentPane().add(panel);
setVisible(true);
}

也许在 jetty 前面有一些看不见的非 window 的东西。

关于java - MouseMotionListener 事件不会在屏幕的某些区域触发,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24664664/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com