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

2022-09-03 08:08:10

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

当我激活任务控制时,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);
                }
            });
    }
}

我的环境是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

答案 1

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

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


答案 2

请尝试以下操作:

  1. 转到“系统偏好设置”>“显示器>排列
  2. 将两个矩形完美对齐
  3. 看看它是否有效
  4. 如果没有,请更改 2 个矩形的顺序(以及监视器或以不同的方式插入它们)

希望这有帮助,但我不确定这是否是解决方案。