调整大小后,JFrame在Windows 8.1上冻结

Paw*_* P. 10 java windows user-interface swing window-resize

也发布在coderanch.com上.

import javax.swing.*;

public class Tmp {
    public static void main(String[] args) {
        SwingUtilities.invokeLater(new Runnable() {
            @Override
            public void run() {
                JFrame frame = new JFrame();
                frame.setSize(200, 200);
                frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
                frame.add(new JTextField());
                frame.setVisible(true);
            }
        });
    }
}
Run Code Online (Sandbox Code Playgroud)

有关调整此JFrame大小的问题.

这是程序启动后默认的外观:

在此输入图像描述

当我尝试像在图片上显示的那样调整大小并将鼠标指针移动到屏幕顶部时(如下图所示)我看到了:

在此输入图像描述

当我释放鼠标时,框架被调整大小但没有响应.它上面有一个黑色的空间.这是它的样子:

在此输入图像描述

这种情况发生在Windows 8.1和java 1.7.0_45上(它也发生在Windows 7上).
使用其他方法在Windows中调整框架大小时不会发生此问题.
仅当"在拖动时显示窗口内容"在系统设置中处于活动状态时才会发生.
为什么会这样?
怎么解决这个问题?

jav*_*acm 0

我有带有jdk1.7.0_25的Windows 7,你的代码对我来说工作得很好
我有3个解决方案:
1-我认为Oracle在45的更新中是错误的,你可以用25替换45
2-Java中的任何图形用户界面都使用操作系统也许 windows 8 与 java 7 还不兼容
3 - 您可以添加一个侦听器来调整帧大小并调用 repaint(); 在侦听器主体中或将大小设置为实际大小,
您也可以尝试使用 setUndecorated(true) 和自定义鼠标侦听器来实现帧调整大小