Java pára de capturar eventos de movimento do mouse após maximizar ou rastrear completamente uma janela no Mac OS X

Quando amplio uma janela pressionando o botão de maximização ou o botão de tela cheia no OS X, os eventos de movimento do mouse não são mais capturados (embora o arrastamento seja).

Eu incluí um programa de demonstração abaixo que destaca o problema. O problema de maximização pode ser replicado usando oExemplo de início da web MouseEventDemo noWebsite de Tutoriais Java.

Após alguns problemas, observei que os movimentos do mouse são recapturados se o mouse sair da janela (por exemplo, passa para a parte superior da janela para acessar a barra de menus) e depois retorna. Parece que o problema pode ter algo a ver com a relação entre a posição do mouse e a janela durante o redimensionamento de animações, já que o mouse não está no quadro antes do redimensionamento, mas depois, embora não tenha necessariamente se movido no processo.

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) {
        label.setText(e.toString());
    }

    private static boolean isMacOSX() {
        return System.getProperty("os.name").indexOf("Mac OS X") >= 0;
    }

    public static void enableFullScreenMode(Window window) {
        try {
            Class<?> clazz = Class.forName("com.apple.eawt.FullScreenUtilities");
            Method method = clazz.getMethod("setWindowCanFullScreen", new Class<?>[] { Window.class, boolean.class });
            method.invoke(null, window, true);
        } catch (Throwable t) {
            t.printStackTrace();
        }
    }
}

Executar o código acima deve revelar quando o rótulo é atualizado ou não.

Estou executando o OS X versão 10.9 Build 13A3017 com o Java SE 7 [1.7.0_45].

questionAnswers(4)

yourAnswerToTheQuestion