移动到Mac OS X上的其他屏幕/桌面/显示器时,Java Swing应用程序窗口消失

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (2)
  • 关注 (0)
  • 查看 (11)

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

当我激活任务控制时,摆动窗口出现在我拖动桌面的底部。禁用任务控制会导致它滑出屏幕底部。

我运行哪个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);
                }
            });
    }
}

我的环境是Oracle Java JDK(截至撰写本文时为止)在Mac OS X优胜美地(截至撰写本文时的最新情况):

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(真);

用户回答回答于

尝试以下操作:

  1. 进入系统Preferences > Displays > Arrangement
  2. 完美地对齐两个矩形
  3. 看看它是否有效
  4. 如果没有,更改2个矩形的顺序(和监视器或以不同的方式插入)

扫码关注云+社区