小编e4e*_*4e5的帖子

Java在Mac OS X中最大化或完全筛选窗口后停止捕获鼠标移动事件

当我通过按下OS X上的最大化按钮或全屏按钮放大窗口时,不再捕获鼠标移动事件(尽管拖动是).

我在下面添加了一个演示程序,突出了该问题.可以使用Java Tutorials网站上的MouseEventDemo Web start示例复制最大化问题.

经过一些故障排除后,我注意到如果鼠标离开窗口(例如,移动到窗口顶部以访问菜单栏)然后返回,则重新捕获鼠标移动.似乎问题可能与调整动画大小期间鼠标位置和窗口之间的关系有关,因为鼠标在调整大小之前不在帧中,但即使它不一定在此过程中移动也是如此.

import java.awt.Window;
import java.awt.event.MouseEvent;
import java.awt.event.MouseMotionListener;
import java.lang.reflect.Method;
import javax.swing.JFrame;
import javax.swing.JLabel;

public class Main implements MouseMotionListener {

    JLabel label = new JLabel("label");

    public static void main(String[] args) {
        Main main = new Main();
        main.init();
    }

    public void init() {
        JFrame frame = new JFrame();
        frame.setSize(640, 480);
        frame.setLocationRelativeTo(null);
        frame.getContentPane().add(label);
        frame.addMouseMotionListener(this);
        frame.setVisible(true);

        if (isMacOSX()) {
            enableFullScreenMode(frame);
        }
    }

    public void mouseDragged(MouseEvent e) {
        label.setText(e.toString());
    }

    public void mouseMoved(MouseEvent e) { …
Run Code Online (Sandbox Code Playgroud)

java macos swing

8
推荐指数
2
解决办法
1159
查看次数

标签 统计

java ×1

macos ×1

swing ×1