当我通过按下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)