在 Mac OS X 上移动到另一个屏幕/桌面/显示器时,Java Swing 应用程序窗口消失

标签 java macos swing

每当我用鼠标将它从一个监视器拖到另一个监视器时,我的 Java Swing 应用程序窗口就会消失。当我拖动它时它是可见的,但当我释放鼠标按钮时它会立即消失。我宁愿窗口没有消失。为什么会消失?

当我激活 Mission Control 时,Swing 窗口出现在我将其拖动到的桌面底部。停用 Mission Control 会使其从屏幕底部滑出。

我运行哪个 Java Swing 应用程序并不重要。对于那些想要代码的人,这里有一个简单的 Java Swing 应用程序,它展示了我正在描述的行为,请欣赏:

import java.awt.*;
import javax.swing.*;

class SimpleSwing {
    public static void main(final String... args) {
        SwingUtilities.invokeLater(new Runnable() {
                @Override public void run() {
                    JFrame frame = new JFrame();
                    JPanel contentPane = new JPanel();
                    contentPane.add(new JLabel("Hello World!"));
                    frame.setContentPane(contentPane);
                    frame.pack();
                    frame.setVisible(true);
                }
            });
    }
}

我的环境是 Mac OS X Yosemite(撰写本文时最新)上的 Oracle Java JDK(撰写本文时最新):

java version "1.8.0_40"
Java(TM) SE Runtime Environment (build 1.8.0_40-b27)
Java HotSpot(TM) 64-Bit Server VM (build 25.40-b25, mixed mode)

OS X Yosemite Version 10.10.2 (14C1510)
Darwin Kernel Version 14.1.0

最佳答案

步骤:在frame.setVisible(true)之前;您可以在下面添加两行代码,然后再次测试。

frame.setLocation(500, 500); frame.setAlwaysOnTop(true);

关于在 Mac OS X 上移动到另一个屏幕/桌面/显示器时,Java Swing 应用程序窗口消失,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29158029/

相关文章:

java - 如何向 JOptionPane 按钮添加鼠标监听器?

java - 多个 Spring @RequestMapping header

java - 更改打开 jar 时首先运行哪个 java 文件

java - 编译 Android 应用程序时 native 代码 (JNI) 会发生什么情况?

python - matplotlib savefig 中区分大小写

java - mouseMoved(MouseEvent e) 跟不上程序逻辑

java - 如何将按钮放在屏幕上我想要的位置。

java - Maven多模块项目版本管理

macos - MAC 去获取 github.com/go-gl/gl

cocoa - 我如何将第三方框架添加到我的 cocoa 项目中